Поля страницы C# не заполняются, как ожидалось
Может кто-нибудь сказать мне, что я делаю не так? Я пытаюсь вызвать метод автоматически при загрузке страницы, однако он не работает.
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
customerInformation();
}
}
protected void ddNames_SelectedIndexChanged(object sender, EventArgs e)
{
customerInformation();
}
private void customerInformation()
{
string dbString = ConfigurationManager.ConnectionStrings["TechSupportDBConString"].ConnectionString;
string query = "SELECT * FROM Customers WHERE Name='" + ddNames.Text + "'";
SqlConnection Connection = new SqlConnection(dbString);
Connection.Open();
SqlCommand Com = new SqlCommand(query, Connection);
SqlDataReader reader = Com.ExecuteReader();
if (reader.Read())
{
lblName.Text = reader["Name"].ToString() + "'s Personal Information";
lblAddress.Text = reader["Address"].ToString() + "\n" + reader["City"].ToString() + " " + reader["State"].ToString() + " " + reader["ZipCode"].ToString();
lblPhone.Text = reader["Phone"].ToString();
lblEmail.Text = reader["Email"].ToString();
reader.Close();
Connection.Close();
}
}
1 ответ
Хорошо, просматривая ваш код, я вижу, что соединение считывателя и базы данных замкнуто в самом цикле, что не должно быть сделано.
SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
//populate fields from reader
}
}
else
{
lbl.Text = "No records found.";
}
reader.Close();
Connection.Close();
Следующее, что я заметил, что выпадающий выбранный текст / значение должно быть либо ddNames.SelectedItem.Text
или в случае передачи значения ddNames.SelectedValue
,
Далее убедитесь, что каждое имя читателя должно точно совпадать с именем столбца таблицы.
И последнее, но не менее важное: всегда делайте правильную проверку нуля перед применением ToString()
.Если любой столбец имеет нулевое значение ToString()
не сможет конвертировать.
Надеюсь это поможет.