繁体   English   中英

dataGridView1_CellValueChanged无法正常工作

[英]dataGridView1_CellValueChanged not working

我知道对此有数百个问题,请相信我,我已经阅读了所有内容,但似乎对我没有任何帮助。

我有一个这样的数据网格赢得表格:

    private void button1_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection("user id=testuser12;" +
                                   "password=Reporting11#;Data Source=SERVER;" +
                                   "Initial Catalog=Partner_database; " +
                                   "connection timeout=30");
        con.Open();
        SqlCommand command = new SqlCommand("select * from [dbo].[Test_table]", con);

        sda = new SqlDataAdapter(command);
        sda.AcceptChangesDuringFill = true;
        sda.AcceptChangesDuringUpdate = true;
        set.Clear();

        cmdBuilder = new SqlCommandBuilder(sda); // using this to update the database
        sda.Fill(set,"cucu");
        dataGridView1.DataSource = set;
        dataGridView1.DataMember = "cucu";
        dataGridView1.CellValueChanged -= dataGridView1_CellValueChanged;//line added after solution given
        dataGridView1.CellValueChanged += dataGridView1_CellValueChanged;//line added after solution given

    }

然后,我试图捕获CellValueChange事件以运行类似的内容:

    private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        //if (dataGridView1.Columns[e.ColumnIndex].Name == "Age") // deleted this line after solution was given
        //if (e.ColumnIndex > -1) // i have also tried with this one but does not work
        {

            MessageBox.Show("It works!");
        }
    }

似乎无法使其正常工作。 我正在修改单元格,还将焦点更改为另一个单元格以尝试触发事件。 我要疯了。 我想念什么?

谢谢。 Danut

编辑1:根据到目前为止的答复。

我试图删除CellValueChanged事件中的IF子句只是为了测试该事件是否正常。 它没有触发。

我尝试了CellEndEdit事件,但仍然没有触发。

初始化网格时我需要做些什么? 还是要做一些事情来触发事件?

编辑2:

现在,事件是通过以下解决方案触发的:“您需要在DataGridView上设置事件处理程序。在属性选项卡中转到事件面板,然后双击所需的事件类型,这将创建并连接事件处理程序。 ..或者,您可以通过编写以下内容来手动完成此操作:dataGridView1.CellValueChanged + = dataGridView1_CellValueChanged;“

但是,当网格中填充数据时,它会被触发,而我会多次获得该框。

编辑3:解决方案-解决

我添加了两行代码(请参见上面的代码)。 我还重置了datagrid属性中的事件,仅使用了这两行来调节触发器。

谢谢大家的支持。

从SQL更新数据库后,添加以下内容

dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);

这应该使DataGridView能够接受更改。

我希望这有帮助。


这没有用。 好的,您需要在DataGridView上设置事件处理程序。 在属性选项卡中转到事件面板,然后双击所需的事件类型,这将创建并连接事件处理程序...或者,您可以通过以下操作手动进行操作:

dataGridView1.CellValueChanged -= dataGridView1_CellValueChanged;
dataGridView1.CellValueChanged += dataGridView1_CellValueChanged;

第一个确保您不会“堆叠”处理程序。

试试这个

if( dataGridView1.Columns[e.ColumnIndex].Name.ToLower().Trim().Equals("age") ) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM