【发布时间】:2021-01-02 20:55:24
【问题描述】:
我正在尝试从 datagridview 编辑一行。每行都有一个按钮。当我按下其中一个行按钮时,会打开第二个表单,并在文本框中显示有关该行的信息,我需要编辑我想要的内容。
问题是我已经写好编辑代码了,但是无法在按钮函数中添加DataGridViewCellEventArgs,或者无法使用RowIndex来编辑特定行。
代码如下:
public void btnUpdate_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(@"Data Source=DESKTOP-VUPD668;Initial Catalog=dbApp;Integrated Security=True");
SqlCommand cmd;
cmd = new SqlCommand("UPDATE tableApplication SET Name='" + txtName.Text + "',Package='" + txtPackage.Text + "',Hour='" + txtHour.Text + "',Date='" + txtDate.Text + "',Phone='" + txtPhone.Text + "',Observations='" + txtObservations.Text + "' WHERE ID=" + f1.dgvContactList.Rows[rowIndex].Cells[0].Value.ToString(), conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("Edit was saved");
this.Close();
}
这里是带有 dgv 的主窗体中的代码
public void dgvContactList_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 7)
{
formAddEditContact f2 = new formAddEditContact();
int rowIndex = e.RowIndex;
formContact f1 = new formContact();
f2.lblTitle.Text = "Edit";
f2.btnSave.Visible = false;
f2.btnUpdate.Visible = true;
f2.btnDelete.Visible = true;
f2.txtName.Text = f1.dgvContactList.Rows[rowIndex].Cells[1].Value.ToString();
f2.txtPackage.Text = f1.dgvContactList.Rows[rowIndex].Cells[2].Value.ToString();
f2.txtHour.Text = f1.dgvContactList.Rows[rowIndex].Cells[3].Value.ToString();
f2.txtDate.Text = f1.dgvContactList.Rows[rowIndex].Cells[4].Value.ToString();
f2.txtPhone.Text = f1.dgvContactList.Rows[rowIndex].Cells[5].Value.ToString();
f2.txtObservations.Text = f1.dgvContactList.Rows[rowIndex].Cells[6].Value.ToString();
f2.ShowDialog();
如何在按钮功能中使用 RowIndex。如何添加 DataGridViewCellEventArgs。
【问题讨论】:
-
你为什么要“创建”一个新的
formContactf1?该表单从未显示,因此代码...f1.dgvContactList.Rows[rowIndex].Cells[1].Value.ToString();不会有任何行,因为网格尚未显示。你试过…dgvContactList.Rows[rowIndex].Cells[1].Value.ToString();? -
您在哪里将查询结果添加到 DGV?您正在使用 cmd.ExecuteNonQuery(); 执行查询但从不获取 cmd 的结果并读取结果。
-
以下article 可能感兴趣,请看截图。 Full source。我存根存回数据库。