【问题标题】:add an event on the button which is included in the datagridview columns在 datagridview 列中包含的按钮上添加一个事件
【发布时间】:2013-05-28 06:22:24
【问题描述】:

我有一个 WINDOWS 应用程序。在这个我有一个表格,上面有一个datagridview。 现在我在数据库中使用 EMPLOYEE MASTER 填充 datagridview。因此,当填充数据网格时,我还有 2 个额外的按钮作为数据网格中的其他 2 个 cloumns。现在是 EDIT & DELETE,所以数据网格中的每一行都有这些按钮。现在我想通过单击这些按钮添加适当的编辑和删除功能。编辑一个新的表格应该打开。拥有特定员工的所有信息。 请帮忙

这里是代码:

private void frmemployee_Load(object sender, EventArgs e)
        {
            cmd.Connection = con;
            con.Open();
            adp = new SqlDataAdapter(cmd);
            cmd.CommandText = "Select * from employee";
            adp.Fill(dsemployee,"employee");
            dataGridView1.DataSource = null;
            dataGridView1.Rows.Clear();
            dataGridView1.DataSource = dsemployee.Tables[0];
            dataGridView1.Columns[0].Visible = false;
            DataGridViewButtonColumn editcolumn = new DataGridViewButtonColumn();
            editcolumn.UseColumnTextForButtonValue = true;
            editcolumn.Text = "EDIT";
            editcolumn.Name = "EDIT";
            editcolumn.DataPropertyName = "EDIT";
            editcolumn.HeaderText = "EDIT";
            dataGridView1.Columns.Add(editcolumn);

            cmd.ExecuteNonQuery();
            con.Close();

        }

【问题讨论】:

    标签: c# winforms datagridview


    【解决方案1】:

    我会在 DataGridView CellClick 事件中处理这个问题:

    private void GridCellClick(object sender, DataGridViewCellEventArgs e)
    {
        if (e.RowIndex < 0 || e.ColumnIndex < 0)
        {
            return;
        }
    
        if (dataGridView1.Columns[e.ColumnIndex].Name == "EDIT")
        {
            //edit logic here
        }
        else if (dataGridView1.Columns[e.ColumnIndex].Name == "DELETE")
        {
            //delete logic here
        }
    }
    

    【讨论】:

      【解决方案2】:

      您应该订阅DataGridView.CellContentClick 事件,据我所知并处理该事件,找出具体 单元格点击已完成,因此执行适当的操作。

      【讨论】:

        【解决方案3】:

        继续 gzaxx'x 的回答,在逻辑部分,您可以将所选表格行的主键从当前表单传递到新表单。假设它在第一列是一个整数,你可以这样写

        private void GridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)

        {

        int prim_key = (int)dataGridView1.Rows[e.RowIndex].Cells[0].Value;

        //然后打开新表单,你想编辑并传递主键

        Form2 f2 = new Form2(prim_key);

        f2.ShowDialog();

        }

        在form2中使用构造函数来接受这个值,你可以从db中填充你的表单

        公共 Form2(int primkey) { }

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-12-17
          • 1970-01-01
          • 1970-01-01
          • 2018-06-23
          • 1970-01-01
          • 2020-04-02
          • 1970-01-01
          相关资源
          最近更新 更多