Как редактировать / обновить строку в DataGridView в C # - PullRequest
0 голосов
/ 04 октября 2018

Я работаю над такой корзиной для покупок, как Форма в WF.У меня есть DataGridView и ADD_Button и Submit_Button. Пользователь выберет Предметы из инвентаря и щелкнет ADD_Button Предмет перейдет в DataGridView После завершения пользователь нажмет Submit_Button, после чего информация перейдет в БД.

Вопрос: это после добавления продукта / строки в DatagridView Когда я снова добавляю тот же продукт. Он переходит в новую строку, я хочу, чтобы Где Pro_ID Соответствие столбца, Строка обновлялась с новым количеством.Я пытался выполнить поиск в Интернете, но все, что я получил запросы SQL.

 private void btn_Add_Click(object sender, EventArgs e)
    {
            i = dgv_Purchase.Rows.Count;
            try
            {
                dgv_Purchase.Rows.Add();
                            .......
                            .......
                dgv_Purchase.Rows[i - 1].Cells["Pro_ID"].Value = txt_ProID.Text;
                            .......
                            .......

                dgv_Purchase.Rows[i - 1].Cells["Purchase_Qty"].Value = txt_Qty.Text;
            }
            catch (Exception ){}

     }

Это код кнопки "Отправить"

private void btnInsert_Click (отправитель объекта, EventArgs e) {строка cs = ConfigurationManager.ConnectionStrings[ "PRMSConnectionString"] ToString ().SqlConnection con = new SqlConnection (cs);SqlTransaction objTransaction;

        for (int i = 0; i < dgv_Purchase.Rows.Count - 1; i++)
        {
            //SomeCode part of code
            SqlCommand objCmd2;
            string cmd2 = "INSERT INTO PurchaseMaster " +
                        " (Pro_ID , category_ID, Purchase_Qty) " +
                "VALUES (@Pro_ID, @category_ID, @Purchase_Qty)";
            objCmd2 = new SqlCommand(cmd2, con, objTransaction);

            objCmd2.Parameters.AddWithValue("@Pro_ID_ID", dgv_Purchase.Rows[i].Cells["Pro_ID"].Value.ToString());
            objCmd2.Parameters.AddWithValue("@Category_ID", dgv_Purchase.Rows[i].Cells["Category_ID"].Value.ToString());


            objCmd2.Parameters.AddWithValue("@Purchase_Qty", Convert.ToInt32(dgv_Purchase.Rows[i].Cells["Purchase_Qty"].Value.ToString()));
            objCmd2.Parameters.AddWithValue("@Date_Today", Convert.ToDateTime(dgv_Purchase.Rows[i].Cells["Purchase_Date"].Value.ToString()));
                                    ...........................
                                    Rest of the Code
                                    ...........................
            try
            {
                objCmd2.ExecuteNonQuery();
                objTransaction.Commit();
            }
            catch (Exception) {}
         } 
     }

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Попробуйте это:

private void AddInfo()
{
    // flag so we know if there was one dupe
    bool updated = false;

    // go through every row
    foreach (DataGridViewRow row in dgv_Purchase.Rows)
    {
        // check if there already is a row with the same id
        if (row.Cells["Pro_ID"].ToString() == txt_ProID.Text)
        {
            // update your row
            row.Cells["Purchase_Qty"] = txt_Qty.Text;

            updated = true;
            break; // no need to go any further
        }
    }

    // if not found, so it's a new one
    if (!updated)
    {
        int index = dgv_Purchase.Rows.Add();

        dgv_Purchase.Rows[index].Cells["Purchase_Qty"].Value = txt_Qty.Text;
    }
}
0 голосов
/ 04 октября 2018

Я редактирую его с DGVrow вместо DataRow

foreach (DataGridViewRow dr in dataGridView1.Rows)
    {
        if (dr.Cells["Pro_ID"].Value.ToString() == txt_ProID.Text)
        {                      
                    dr.Cells["Purchase_Qty"].Value = txt_Qty.Text;
                }
            }
...