有如下方法: public static void TrimText<FT>(FT frm, Control control)
        {
            foreach (Control ctrlTemp in control.Controls)
            {
                if (ctrlTemp.GetType() == typeof(DevExpress.XtraEditors.TextEdit) || ctrlTemp.GetType() == typeof(TextBox))
                {                    
                    //ToDBC和InputText方法分别为全角转半角和过滤危险字符
                    ctrlTemp.Text = ToDBC(ctrlTemp.Text);
                    ctrlTemp.Text = InputText(ctrlTemp.Text, ctrlTemp.Text.Length);
                }
                TrimText(frm,ctrlTemp);
            }
        }
此方法完成对某一控件的子控件类型为TextBox和TextEdit(第三方控件)的Text值进行规范 最终影响DataTable 中数据  控件的Text属性绑定bdsc某一个字段(bdsc绑定到强DataSet中的DataTable )  首次执行此方法不会出现问题 当新增失败后(数据库重复验证)改变输入值 再次调用此方法后  监视bdsc当前项和DataTable中字段值已经改变 但利用DataSet的GetChange()方法得到的改变后的DataSet仍为第一次新增时的数据  望高手指点一二

解决方案 »

  1.   

    GetChange()获取的是每个Datarow的当前版本和旧版本不一样的行来的了
    可以查看你修改的
    原始版本和新版本了 
    具体自己调试了 
    custRow["CustomerID", DataRowVersion.Original].ToString();DataRowVersion 值  说明  
    Current
     行的当前值。对于 RowState 为 Deleted 的行,则不存在此行版本。
     
    Default
     特定行的默认行版本。Added、Modified 或 Unchanged 行的默认行版本是 Current。Deleted 行的默认行版本是 Original。Detached 行的默认行版本是 Proposed。
     
    Original
     行的原始值。对于 RowState 为 Added 的行,则不存在此行版本。
     
    Proposed
     行的建议值。在对行进行编辑操作期间,或对于不属于 DataRowCollection 的行,存在此行版本。
     
      

  2.   

    监视过了   当前值为修改后的值··   但GetChange()拿到的是原始值···
      

  3.   

    那就是说你更改过的值就没有修改数据源 
    或者什么地方你AcceptChanges()了 
      

  4.   

    数据源是变化了的     查看bdsc当前项与绑定数据集中数据都是变化了的  唯独GetChange()拿不到还有 如果AcceptChanges()了 是拿不到变化的   不知道是不是第三方控件的问题  没有用.net控件试过
      

  5.   

    如果你说改变了  你要看哪个改变的值的Row中的各列的原始版本是否有值 并且是否与现在的版本值一样  如果一样 你看到改变了 可是他内部并不认为改变了