注:
datatable 与 winform 在两个类中,DataTable 所在的能能得到具体的控吗?

解决方案 »

  1.   

    不能用AcceptChanges,你可以用EndEdit()
      

  2.   

    HanYZ(飞虎) :
       多谢多谢。是一系列绑定控件。
       问题:
    我先说说我的情况:
       1.winform程序。
       2.form中有一DataSet,form中的控件与DataSet 中的personTable绑定
       3.person类中也有一个DataTable TB,其实现与Form中PersonTable的引用
       4.先在Person类的TB的列改变事件,录入身份证号,并解析身份证号,
    分别赋与另两个列:sexNo,birthday
       5.窗体上绑定sexNo,与BirthDay的控件如何立即刷新?急切盼复!
      

  3.   

    HanYZ(飞虎):
        多谢多谢。
        此时用户的编辑还没完毕,可能还有一些非空的字段。
        另外我的界面代码与验证代码是分开的。
      

  4.   

    要实现立即刷新必须要有个东西来通知程序,让程序知道所以必须要有个事件来通知程序你可以试试自定义事件然后把重写datagrid的WndProc来检查
      

  5.   

    EndEdit()调用后你可以立即调用BeginEdit();继续编辑
    同时控制不要进行数据验证
      

  6.   

    yarshray(saga jion):
         多谢,多谢。
         现在的关键问题实际上就是我能不能通过TB的列来只知道相应绑定的
    控件名。
         注: 我用的是一系列的控件来绑定DataTable的。
      

  7.   

    to HanYZ(飞虎):
       谢谢谢谢:
       我刚才试过。 但我form上的增加操作是通过CurrencyManager对象来实现的,它没有beginEdit()
       再请指教!
      

  8.   

    新建一个Form 放上三个TextBox试一下看看,或许可以帮到你private System.Data.DataTable dt;private void Form1_Load(object sender, System.EventArgs e)
    {
    this.dt = new DataTable();
    dt.Columns.Add("X",typeof(System.String));
    dt.Columns.Add("Y",typeof(System.String)); DataRow dr = dt.Rows.Add(new object[]{"1","2"});
    this.textBox1.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.dt, "X"));
    this.textBox3.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.dt, "Y"));
    this.dt.ColumnChanged += new DataColumnChangeEventHandler(RowChange);
    }private void RowChange(object sender, DataColumnChangeEventArgs e)
    {
    if (e.Column.ColumnName == "X")
    {
    e.Row["Y"] = e.Row["X"];
    e.Row.EndEdit();
    }
    }private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
    {
    if (e.KeyChar == (char)13)
    {
    textBox2.Focus();
    }
    }
      

  9.   

    EndEdit();
    BeginEdit();
    这两个方法都用在DataRow上,如上例
      

  10.   

    HanYZ(飞虎)老兄:
       按道理,你的方法是可以的,但是在我这儿却不行。
      

  11.   

    我做的是三层开发:
       主要情况如下:
       winform层:        一DataSet ,其中含一PersonTable表
       businessFacade层: 含一Mediator,其主要作用是将界面上的PersonTable
                         转移到person类中。
       businessRules层:  含一PersonTable表,其对界面上PersonTable进行引用。
       比较你的实例,其差别会不会是不同的类中,消息传递不到窗体上?
      

  12.   

    另外,在我AcceptChanged之后,确显示正常结果,why?
      

  13.   

    应该是你多层传递的问题,不过
    多层,如果没有经过WebService的话,可以直接将DataAccess构造的DataTable作为参数传递到WinForm层,你为什么要用新的类去转换呢?
      

  14.   

    首先、如果你用我上面的测试代码可以看到textBox3的内容改变的话,说明EndEdit方法是可以得到你所要的效果的(我通常先用简单的例子尝试成功,再考虑复杂的),然后再去找出你代码中可能的其他原因