关于自定义属性的数据绑定问题 难道没有人知道吗?顺便说一下,我实现这个属性的目的是可以处理数据库中日期字段为空的情况。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个问题还真没注意到gz 我前两天寻找对RichTextBox内容进行绑定的方法时也碰到这个问题。我找了一个方法,可以部分地解决: bool _myValueChanged=false; bool _dataChanged=false; BandingManagerBase _bindManager; DataTable _bindingTable; _bindingTable=ds.Tables["myTable"]; _bindingManager=this.BindingContext[ds,"myTable"]; _bindingTable.ColumnChanged+=new ColumnDataChangedHandler(BindingTableDataChanged); Binding b=new Binding("myValue",ds,"myTable.myValueColumn"; b.Parse+=new ConverterEventHandler(CheckMyValue); myControl.DataBinding.Add(b); //在控件绑定值传回DataTable时发生 private void CheckMyValue(object sender ConverterEventArgs cevent) { DataRow dr=((DataRowView)_bindingManager.Current).Row; string v1,v2 v1=(string)dr["myValueColumn"]; v2=(string)cevent.Value; if (v1==v2) //此处根据不同的数据类型可能要作相应改变 _myValueChanged=false else _myValueChanged=true; }//所绑定的DataTable列值发生改变是触发 private void BindingTableDataChanged(object sender, DataColumnChangeEventArgs e) { if (_dataChanged)return; dr=((DataRowView)_bindingManager.Current).Row; if (e.Column.ColumnName=="myValueColumn"&&!_myValueChanged) { dr.AcceptChanged(); return; } _dataChanged=true; } 在程序中其它地方用_dataChanged判断数据是否改变。 用这种方法,当myValueColumn绑定回DataTable时,如没有其它数据发生改变,则可以通过取消该行的改变状态,使其行状态为“未改变”,但如此时有其它数据已经发生改变,则无法。不知有没有方法可以单独设置某行某列的状态,如有人知道,还望告之。 加注:以上代码全用手写的,可能会有错误,还望见谅。 用随机函数产生不重复的5个数字 急! 怎么样分析word文档中的内容 用C#写了程序,但只能在本机运行,在其他计算机上面运行不了 类型转换问题 一个小问题求指点?事件??? 招聘.NET高级程序员 有关B/S与三层结构的讨论!!!!请大家关注!!!!! 串口调试工具的数据无法传输到我的winform程序里? 请教:winform中怎么使用form2中的button给form1中的treeView添加节点 未在本地计算机上注册“OraOLEDB.Oracle.1”提供程序? Update后引发 并发冲突:DeleteCommand 影响 0 个记录
gz
bool _myValueChanged=false;
bool _dataChanged=false;
BandingManagerBase _bindManager;
DataTable _bindingTable;
_bindingTable=ds.Tables["myTable"];
_bindingManager=this.BindingContext[ds,"myTable"];
_bindingTable.ColumnChanged+=new ColumnDataChangedHandler(BindingTableDataChanged);
Binding b=new Binding("myValue",ds,"myTable.myValueColumn";
b.Parse+=new ConverterEventHandler(CheckMyValue);
myControl.DataBinding.Add(b);
//在控件绑定值传回DataTable时发生
private void CheckMyValue(object sender ConverterEventArgs cevent)
{
DataRow dr=((DataRowView)_bindingManager.Current).Row;
string v1,v2
v1=(string)dr["myValueColumn"];
v2=(string)cevent.Value;
if (v1==v2) //此处根据不同的数据类型可能要作相应改变
_myValueChanged=false
else
_myValueChanged=true;
}//所绑定的DataTable列值发生改变是触发
private void BindingTableDataChanged(object sender,
DataColumnChangeEventArgs e)
{
if (_dataChanged)return;
dr=((DataRowView)_bindingManager.Current).Row;
if (e.Column.ColumnName=="myValueColumn"&&!_myValueChanged)
{
dr.AcceptChanged();
return;
}
_dataChanged=true; }
在程序中其它地方用_dataChanged判断数据是否改变。 用这种方法,当myValueColumn绑定回DataTable时,如没有其它数据发生改变,则可以通过取消该行的改变状态,使其行状态为“未改变”,但如此时有其它数据已经发生改变,则无法。不知有没有方法可以单独设置某行某列的状态,如有人知道,还望告之。