Выпадающий список в gridview, обновляющий только первое значение для базы данных ASP.Net

#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
}