示例代码如下:
using (SqlConnection conn = new SqlConnection(Common.strConn)) 
                    { 
                        conn.Open(); 
                        sc.Connection = conn;                         sc.CommandText = "SELECT * FROM SORDER"; 
                        sda.SelectCommand = sc; 
                        sda.Fill(ds,"SORDER"); 
                        conn.Close(); 
                    } 
TextBox tx1=new TextBox(); 
tx1.Loction=new Point(0,0); 
tx1.Databinding.Add("Text",ds,"SORDER.SOHNUM"); 
This.Controls.Add(tx1); TextBox tx2=new TextBox(); 
tx2.Loction=new Point(0,20); 
tx2.Databinding.Add("Text",ds,"SORDER.ORDDAT"); 
This.Controls.Add(tx2); TextBox tx3=new TextBox(); 
tx3.Loction=new Point(0,30); 
tx3.Databinding.Add("Text",ds,"SORDER.BPCNUM"); 
This.Controls.Add(tx3); 问题是,我在界面修改了数据,表中的数据好像并没有跟着修改。然后我要怎么删除、添加、修改数据呢?

解决方案 »

  1.   

    即使把TextBox的DataBindings.DefaultDataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;也无法将在界面上修改的数据反射到DataTable。
      

  2.   

    你说的那种更新我没见过,
    只知道自己写代码更新
    加一个button,在button事件中写更新方法
      

  3.   


            private void Form2_Load(object sender, System.EventArgs e)
            {
                SqlConnection cn=new SqlConnection("server=localhost;uid=sa;pwd=;database=pubs");
                SqlDataAdapter ad=new SqlDataAdapter("select * from authors",cn);
                myTable=new DataTable();
                ad.Fill(myTable);
                textBox1.DataBindings.Add("Text",myTable,"au_id");
                textBox2.DataBindings.Add("Text",myTable,"au_fname");
                textBox3.DataBindings.Add("Text",myTable,"au_lname");
                textBox4.DataBindings.Add("Text",myTable,"phone");
                textBox5.DataBindings.Add("Text",myTable,"address");
                textBox6.DataBindings.Add("Text",myTable,"city");
                textBox7.DataBindings.Add("Text",myTable,"state");
                textBox8.DataBindings.Add("Text",myTable,"zip");            Binding b=checkBox1.DataBindings.Add("Checked",myTable,"contract");
                b.Parse+=new ConvertEventHandler(b_Parse);
                b.Format+=new ConvertEventHandler(b_Format);
                myCurrencyManager = (CurrencyManager)this.BindingContext[myTable];
                myCurrencyManager.Position = 0;
                dataGrid1.DataSource=myTable;
              }
    给你看看我做的绑定,没有问题,很好用的。
      

  4.   

    你的代码中,把Controls.Add(tx1)这些语句放在绑定的前面看看。
      

  5.   

    DataSet数据集永远是存在内存中,要更新到数据库还得另用方法,可写更新事件。
    用SqlDataAdapter.Updata(Dataset ds)
      

  6.   

    老大们啊,我还不是想更新到数据库,现在是内存表都不跟着界面上的TextBox同步啊.另外说明一下,我的表里面只有一条纪录,我发现只要有多条纪录,而且是绑定到girdview控件,更改了数据再点击到别的行,然后是可以同步到内存表的,就是说必须要离开当前编辑的行才同步内存表,问题是我只有一条纪录啊,怎么移动到别的行呢?该是的微软怎么这么愚蠢啊
      

  7.   

    老大们啊,我还不是想更新到数据库,现在是内存表都不跟着界面上的TextBox同步啊.另外说明一下,我的表里面只有一条纪录,我发现只要有多条纪录,而且是绑定到girdview控件,更改了数据再点击到别的行,然后是可以同步到内存表的,就是说必须要离开当前编辑的行才同步内存表,问题是我只有一条纪录啊,怎么移动到别的行呢?该是的微软怎么这么愚蠢啊
      

  8.   

    老大们啊,我还不是想更新到数据库,现在是内存表都不跟着界面上的TextBox同步啊.另外说明一下,我的表里面只有一条纪录,我发现只要有多条纪录,而且是绑定到girdview控件,更改了数据再点击到别的行,然后是可以同步到内存表的,就是说必须要离开当前编辑的行才同步内存表,问题是我只有一条纪录啊,怎么移动到别的行呢?该是的微软怎么这么愚蠢啊
      

  9.   

    老大们啊,我还不是想更新到数据库,现在是内存表都不跟着界面上的TextBox同步啊.另外说明一下,我的表里面只有一条纪录,我发现只要有多条纪录,而且是绑定到girdview控件,更改了数据再点击到别的行,然后是可以同步到内存表的,就是说必须要离开当前编辑的行才同步内存表,问题是我只有一条纪录啊,怎么移动到别的行呢?该死的微软怎么这么愚蠢啊
      

  10.   

    老大们啊,我还不是想更新到数据库,现在是内存表都不跟着界面上的TextBox同步啊.另外说明一下,我的表里面只有一条纪录,我发现只要有多条纪录,而且是绑定到girdview控件,更改了数据再点击到别的行,然后是可以同步到内存表的,就是说必须要离开当前编辑的行才同步内存表,问题是我只有一条纪录啊,怎么移动到别的行呢?
      

  11.   

    我发现如果数据表有多行,而且是绑定到gridview,修改数据然后移动到别的行,是可以同步数据的,就是说必须要移动到别的行的时候才同步数据,问题是我的数据表只有一行纪录,怎么移动到别的行啊