难道没有人知道吗?顺便说一下,我实现这个属性的目的是可以处理数据库中日期字段为空的情况。

解决方案 »

  1.   

    这个问题还真没注意到
    gz
      

  2.   

    我前两天寻找对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时,如没有其它数据发生改变,则可以通过取消该行的改变状态,使其行状态为“未改变”,但如此时有其它数据已经发生改变,则无法。不知有没有方法可以单独设置某行某列的状态,如有人知道,还望告之。
      

  3.   

    加注:以上代码全用手写的,可能会有错误,还望见谅。