[英]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.