2016-04-15 94 views
1

我有一个绑定到DataTable'ExcludedMachines'的DataGridView'DGV_MachinesExclusion'。在DataGridView中手动添加新行时,我使用DataGridView的CellValueChanged事件触发下面的代码。向数据表动态添加行添加两行

 private void DGV_MachinesExclusion_CellValueChanged(object sender, DataGridViewCellEventArgs e) 
    { 
     DataRow dr = ExcludedMachines.NewRow(); 
     dr = ((DataRowView)DGV_MachinesExclusion.Rows[0].DataBoundItem).Row; 
     ExcludedMachines.Rows.Add(); 
     UpdateExlusionList(); 
    } 

结果是它增加了两行。一个空白行和一个手动添加数据的行。 方法'UpdateExclusionList()'只是将DataTable写入XML文件。 我曾经用这种方式在过去成功地动态添加行。任何人都可以解释为什么此代码添加两行?

THX,托马斯

回答

0

线

ExcludedMachines.Rows.Add(); 

将添加一个空白行,因为你没有在“添加”功能如何添加到行规定 - 你应该把

ExcludedMachines.Rows.Add(dr); 

改为填充该行。

当你触发事件时,它是否改变触发它的单元格值(即,当你期望它只运行一次时,它不止一次地触发事件)?你是否仔细检查了'UpdateExclusionList()'方法,它肯定没有包含任何额外的行创建代码(从测试中可能留下?)?

希望这会有所帮助。

+1

你是正确的,它添加一个白色的行,因为该行没有填充。我已经改变了这一点,但它只是增加了两个有填充的行。 'UpdateExclusionList()'方法肯定不会添加行,因为我测试了没有此方法之上的代码的事件。 DataTable没有任何事情发生。 –

+0

另外,当我在事件中休息时,它只会停止一次。所以我不认为这个事件会被触发两次。当我离开这行:'ExcludedMachines.Rows.Add()'没有被添加到DataTable中时... –

+0

这意味着问题在于DataRow行。你有没有尝试: 'DataRow dr =((DataRowView) –