我用的VS2008,在winform中,拖入控件datagridview1,bindingnavigator1,并在bindingnavigator中设置了一个textbox1和一个button1,代码如下,已经可以实现在textbox1中搜索并把结果在dataGridView1中显示:
private void button1_Click(object sender, EventArgs e)
        {
            //String ConnectionString = global::LogisticsInfoSys.Properties.Settings.Default.ConnectionString;
            //SqlConnection MyConnection = new SqlConnection(conn);            SqlConnection conn = BaseClass.DBConn.MainConn();            
            conn.Open();
            string MySQL = "Select * From tb_Master Where iCarOrder LIKE '" + this.textbox1.Text + "'";
            DataTable MyMsaterTable = new DataTable();
            SqlDataAdapter tb_MasterTableAdapter = new SqlDataAdapter(MySQL, conn);
            tb_MasterTableAdapter.Fill(MyMsaterTable);
            this.dataGridView1.DataSource = MyMsaterTable;
            if (conn.State == ConnectionState.Open)
            {
                conn.Close();
            }
        }
问题是,我想在bindingnavigator中又添加一个SaveButton,想实现datagridview中直接修改数据后保存,在MSDN官方上的解决答案是如下代码:private void SaveButton_Click(System.Object sender, 
    System.EventArgs e)
{
    TableAdapterName.Update(DataSetName.TableName);
}如它的格式我试了N次,我几天都搞不定,请能帮助我。谢谢!!

解决方案 »

  1.   

    如这个格式,我写了几个都错误,应该怎样写呀?请求大家帮助点解呀。
    private void SaveButton_Click(System.Object sender,
        System.EventArgs e)
    {
        TableAdapterName.Update(DataSetName.TableName);
      

  2.   

    建议看看ado.net的操作。的确是上面的操作就可以,不过,先要实现些东西。具体我忘了,很久没有用了
      

  3.   

    应该是 SqlCommandBuilder 吧,没记错的话
      

  4.   

    谢谢owenliangbin大哥,我根据您的提示在查查,如果有朋友知道,请在这里留言。感谢各位了。
      

  5.   

    2. 绑定的datagridview,在添加了新的数据后,如果想重新写回数据库,保持数据库的同步,一下方法即可:
              核心就是SqlDataAdapter+SqlCommandBuilder+BindingSource... 写了个简单的例子,测试通过: 两个按钮,一个 "加载 ",一个 "更新 ",还有一个 "DataGridView " using   System.Data; 
    using   System.Data.SqlClient; namespace   DataGridViewUpdateToDataBase 

            public   partial   class   Form1   :   Form 
            { 
                    private   SqlDataAdapter   sda   =   new   SqlDataAdapter(); 
                    private   BindingSource   bs   =   new   BindingSource(); 
                    public   Form1() 
                    { 
                            InitializeComponent(); 
                    }                 //加载 
                    private   void   btnLoad_Click(object   sender,   EventArgs   e) 
                    { 
                            DataBind(); 
                    }                 //数据绑定 
                    private   void   DataBind() 
                    { 
                            SqlConnection   con   =   new   SqlConnection( "server=.;database=student;uid=sa;        pwd=0421 "); 
                            sda   =   new   SqlDataAdapter( "select   *   from   studentDetails ",   con); 
                            SqlCommandBuilder   buider   =   new   SqlCommandBuilder(sda); 
                            DataSet   ds   =   new   DataSet(); 
                            sda.Fill(ds,   "student "); 
                            bs   .DataSource   =ds.Tables   [ "student "]; 
                            this.dataGridView1.DataSource   =   bs; 
                    }                 //更新 
                    private   void   btnUpdate_Click(object   sender,   EventArgs   e) 
                    { 
                            sda.Update((DataTable)bs.DataSource); /////写回数据库
                    } 
            } 
    }
    注意:写回数据库时,写入的项要与select时的项一样,如果试图写入查询中没有的项,那么此项的值将为空;
      

  6.   

    To:xinshoushanglua,谢谢您的回复,我把您的代码放在我的程序里,数据绑定与加载都已成功应用,可以搜索出数据,但是您的这个更新还是不能更新,private  void  btnUpdate_Click(object  sender,  EventArgs  e)
    {
          sda.Update((DataTable)bs.DataSource); /////写回数据库
    } 我是直接在datagridview1里直接编辑的里面搜索出的数据,修改后点的btnUpdate保存,然后再搜索同个数据出来看到数据还是没有变化。这个sda.Update((DataTable)bs.DataSource);需要怎么用?
      

  7.   


    private  void  btnUpdate_Click(object  sender,  EventArgs  e)
    {
          bs.EndEdit();//试试
          sda.Update((DataTable)bs.DataSource); /////写回数据库
      

  8.   

    To GTX280,谢谢,您的方法仍然不行,唉我现在好郁闷。。
      

  9.   

    OK,已经可以保存了。
    谢谢:xinshoushanglua的代码,还有GTX280的提醒,
    原来是需要this.validate ,呵呵,现在结贴。