有一个DataViewGrid,一个TextBox,
  dataViewGrid绑定到 DataTable
TextBox 绑定到DataTable 的某字段。显示都没问题,就是,当移动到某行后,在TextBox中修改数据,再点保存按钮,无效。非得移动当前行到其他行,才能保存TextBox新修改的数据。
(这个可用代码实现)若只有一行,怎么办呢?

解决方案 »

  1.   

    补充代码:
    dataGridView1.DataSource = ds1.Tables[0];
            textBox1.DataBindings.Clear();
            textBox1.DataBindings.Add("Text", ds1.Tables[0], "pono");   发现改了TextBox中的数据,若不移动到其他行,则其中数据不能反映到
    ds1.Tables[0]中,
     是否只能这样:
       将TextBox的数据值与ds1.Tables[0]的某列比较一下,若不是,就改一下
    ds1.Tables[0]的某列值为TextBox的内容,再保存  这样是不是太麻烦呢?                
      

  2.   

    我发现DataSet 的数据已经更新了,只是没有保存,我再看看保存代码
      

  3.   

    要设置一个属性,默认的是失去焦点后才更新到数据源。
    加上:UpdateSourceTrigger=PropertyChanged 就指示当属性有变化时把数据更新到数据源。
      

  4.   

    发现TextBox更改后,DataSet.Tables[0] 当前列已更新了值
    可是,当前行的datastate仍然 为unchanged ,所以没有保存到
      

  5.   

    当然不行了,应该随着焦点移动的行中的列重新绑定给textBox1,或换思路
      

  6.   

    是 dataset 的当前行Row的 RowState 仍然为unchanged
    如何强制更改rowstate状态呢?
      

  7.   

    怪事呀,请看int c = dataGridView1.CurrentRow.Index;
    //用代码赋值
             ds1.Tables[0].Rows[c]["pono"] = textBox1.Text;
                if (ds1.Tables[0].Rows[c].RowState == DataRowState.Modified)
                {            }
    可ds1.Tables[0].Rows[c].RowState 仍然为unchanged这是为什么呢?前面明明有赋值语句呀。都改变了行的列数据
      

  8.   

    加上  ds1.Tables[0].Rows[c].EndEdit();就好了
    谢谢各位,都有分
      

  9.   

    WinForm下面的绑定并不理想,不建议用,你喜欢绑定的话,还是用WPF的好。