首页 > 解决方案 > 当datagridview数据绑定时如何编辑行

问题描述

我有datagridview是数据库的绑定表

datagridview 从数据库中加载数据

我想使用文本框从datagredview中的数据库编辑行获取数据

我正在使用此代码编辑数据

private void btn_Edit_Click(object sender, EventArgs e)
{
            
   DataGridViewRow dr = dgvadministration.Rows[index_Row];

   dr.Cells[2].Value = Convert.ToInt32(txt_Masseurs_Code.Text);
   dr.Cells[4].Value = Convert.ToInt32(txt_Session_Type_Code.Text);
   dr.Cells[6].Value = Convert.ToInt32(txt_C_Order_Masseurs.Text);
   dr.Cells[7].Value = Convert.ToInt32(txt_Room_No.Text);
   dr.Cells[8].Value = dtp_Session_Date.Text;
   dr.Cells[9].Value = cbx_Session_done.Checked == true ? true : false;
   dr.Cells[10].Value = txt_Session_Note.Text;
}

index_Rowdgvadministration_CellClick

 private int index_Row;
        private void dgvadministration_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                Clear_Session_Data();
                index_Row = e.RowIndex;
                session_Code_Serial = Convert.ToInt32(dgvadministration.SelectedRows[0].Cells[1].Value.ToString());
                txt_Masseurs_Code.Text = dgvadministration.SelectedRows[0].Cells[2].Value?.ToString();
                txt_Masseurs_Name.Text = dgvadministration.SelectedRows[0].Cells[3].Value?.ToString();
                txt_Session_Type_Code.Text = dgvadministration.SelectedRows[0].Cells[4].Value?.ToString();
                txt_Session_Type_Name.Text = dgvadministration.SelectedRows[0].Cells[5].Value?.ToString();
                txt_C_Order_Masseurs.Text = dgvadministration.SelectedRows[0].Cells[6].Value?.ToString();
                txt_Room_No.Text = dgvadministration.SelectedRows[0].Cells[7].Value?.ToString();
                if (dgvadministration.SelectedRows[0].Cells[8].Value != null)
                {
                    DateTime CoStartDate = (DateTime)dgvadministration.SelectedRows[0].Cells[8].Value;
                    dtp_Session_Date.Text = CoStartDate.ToShortDateString();
                }

                DataGridViewCheckBoxCell chk_Session_Done = dgvadministration.SelectedRows[0].Cells[9] as DataGridViewCheckBoxCell;

                if (Convert.ToBoolean(chk_Session_Done.Value) == true)
                {
                    cbx_Session_done.Checked = true;
                }
                else
                {
                    cbx_Session_done.Checked = false;
                }
                txt_Session_Note.Text = dgvadministration.SelectedRows[0].Cells[10].Value?.ToString();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

但是dr.Cells[2].Value是 null 和 al dr.Cells[X].Value 尽管Convert.ToInt32(txt_Masseurs_Code.Text); 不是 null 和其他文本框

请注意,在从数据库加载数据之前,当使用此代码添加行可编程性时,此代码编辑行正在工作

 DataTable dt = new DataTable();
            dt.Columns.Add("Session_Code");
            DataRow dr = null;

            for (int i = 0; i < 5; i++)
            {
                dr = dt.NewRow();
                dr["Session_Code"] = i.ToString();
                dt.Rows.Add(dr);
            }
            dgvadministration.DataSource = dt;

为什么会发生这种情况,我该如何编辑这一行????

标签: c#datagridviewbindingsource

解决方案


推荐阅读