#asp.net #gridview #drop-down-menu
#asp.net #gridview #выпадающее меню
Вопрос:
Я ищу решение этой проблемы уже много дней, пожалуйста, помогите. У меня есть представление сетки и в нем пять выпадающих списков. У меня есть кнопки редактирования обновления и отмены редактирования в каждой строке. Выпадающий список обновляет базу данных, но только первое значение в выпадающем списке, даже когда пользователь выбирает второе, третье или любое другое значение из выпадающего списка.
Что может быть причиной этого. Вот мои события редактирования / отмены строки и обновления.
protected void gvCustomers_RowEditing(object sender, GridViewEditEventArgs e)
{
gvCustomers.EditIndex = e.NewEditIndex;
BindData();
}
protected void gvCustomers_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
gvCustomers.EditIndex = -1;
BindData();
}
protected void gvCustomers_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
Label lblCustId = (Label)gvCustomers.Rows[e.RowIndex].FindControl("cust_id");
DropDownList ddlCsm = (DropDownList)gvCustomers.Rows[e.RowIndex].FindControl("CSM");
DropDownList ddlSrCsm = (DropDownList)gvCustomers.Rows[e.RowIndex].FindControl("SrCSM");
DropDownList ddlDE = (DropDownList)gvCustomers.Rows[e.RowIndex].FindControl("DE");
DropDownList ddlAE = (DropDownList)gvCustomers.Rows[e.RowIndex].FindControl("AE");
DropDownList ddlTE = (DropDownList)gvCustomers.Rows[e.RowIndex].FindControl("TE");
using (SqlConnection conn = new SqlConnection(connectionString))
{
try
{
conn.Open();
string sql = "Update SOME_TABLE SET CSM= @CSM, SrCSM= @SrCSM ,DE=@DE,AE=@AE,TE=@TE where cust_id=@cust_id";
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.Add("@CSM", SqlDbType.VarChar).Value = ddlCsm.SelectedItem.Value;
cmd.Parameters.Add("@SrCSM", SqlDbType.VarChar).Value = ddlSrCsm.SelectedItem.Value;
cmd.Parameters.Add("@AE", SqlDbType.VarChar).Value = ddlAE.SelectedItem.Value;
cmd.Parameters.Add("@DE", SqlDbType.VarChar).Value = ddlDE.SelectedItem.Value;
cmd.Parameters.Add("@TE", SqlDbType.VarChar).Value = ddlTE.SelectedItem.Value;
cmd.ExecuteNonQuery();
}
}
catch
{ }
gvCustomers.EditIndex = -1;
BindData();
}
}
Любая помощь была бы очень полезна.
Спасибо
Комментарии:
1. Куда вы загружаете свой Grid View? В Page_Load ?
2. Использовали ли вы «if (!IsPostBack){ LoadGridFunc(); }» ? Если нет, попробуйте..
3. да, я только что попробовал, все то же самое … база данных обновляется только по первому значению в выпадающем списке, а не по любому другому.
4. По-видимому, ответ на это проводной, и я не понимаю, почему это произошло. Когда я закрыл Visual Studios и запустил его снова, это сработало. Я не вносил никаких изменений в код.. Этот код правильный. Но да, включая обратную проверку при Page_Load. Это может кому-то помочь.
Ответ №1:
просто заполните выпадающие списки нажатием кнопки редактирования, а затем используйте событие on rowupdating и используйте ddl.Выбрано значение вместо ddl.Выбранный элемент.Значение. Вы найдете выбранные значения.
Ответ №2:
Ваши выпадающие списки, вероятно, повторно настраиваются в вашем событии Page_Load. Если они есть, загрузите их, когда страница не находится в обратной передаче, вот так:
if(!Page.IsPostBack) {
//set drop downs
}