在一个winform中我从数库中调出一表放于dataSet ds 中,并把ds.tables[0]增加一计算列,其值表达式为原有的列A * 列B 的积,把dataSet.tables[0]绑定到dataGrid后,当实时改变列A的值时,必须把焦点移离当前被编辑行后,计算列的改变才会发生,有没有什么办法让焦点到当前行另外一列就显示改变?
并且当改变A列值后,如果不移开焦点到其它行(不是其它列,当焦点移到当前行其它列时,计算列的改变仍无法显示。),ds.hasChanges()无法检测到变化。为什么呢?请问解决方法。谢谢。
并且当改变A列值后,如果不移开焦点到其它行(不是其它列,当焦点移到当前行其它列时,计算列的改变仍无法显示。),ds.hasChanges()无法检测到变化。为什么呢?请问解决方法。谢谢。
// Use the HitTest method to get a HitTestInfo object.
System.Windows.Forms.DataGrid.HitTestInfo hi;
DataGrid grid = (DataGrid) sender;
hi=grid.HitTest(e.X, e.Y);
// Test if the clicked area was a cell.
if(hi.Type==DataGrid.HitTestType.Cell ) {
CurrencyManager gridCurrencyManager =
(CurrencyManager)this.BindingContext
[dataGrid1.DataSource, dataGrid1.DataMember];
gridCurrencyManager.EndCurrentEdit();
}
}http://community.csdn.net/Expert/topic/4281/4281140.xml?temp=.3892176
直接用这两句:
CurrencyManager gridCurrencyManager =
(CurrencyManager)this.BindingContext
[dataGrid1.DataSource, dataGrid1.DataMember];
gridCurrencyManager.EndCurrentEdit();
也不行呀。在修改数据的时候ds.hasChangers()检测不到此变化
this.iMoveDS.CntrMovement.ColumnChanging+=new DataColumnChangeEventHandler(CntrMovement_ColumnChanging);
iMoveDS是我的DataSet,CntrMovement是我的DataTable。
然后写CntrMovement_ColumnChanging事件:
if (离开的那一列的列名==e.Column.ColumnName)
{
计算();
}