问题1:我的datagridview里的数据是手工方式填加的,可以用dgv.rows.clear()来清空,但是修改以后我是用的dgv.datasource=datatable自动绑定,就不能再用dgv.rows.clear()来清空,请问如何判断当前的datagridview是手工绑定还是自动绑定?
问题2:我有2个按钮,一个是修改,一个是保存,用于控制datagridview。
修改的代码:
        private void button6_Click(object sender, EventArgs e)
        {
            gv_Drug.ReadOnly = false;   //gv_Drug是datagridview对象
            button6.Enabled = false;    //button6是修改铵钮
            button5.Enabled = true;     //button5是保存铵钮
        }
保存的代码:
        private void button5_Click(object sender, EventArgs e)
        {
            button5.Enabled = false;
            button6.Enabled = true;
            gv_Drug.DataSource = conn.dt;
            conn.da.Update(conn.dt);
            gv_Drug.ReadOnly = true;
        }
现在的问题是保存后datatable不更新,再次点修改,再保存就可以更新。不明白是为什么?

解决方案 »

  1.   

    问题1: ,请问如何判断当前的datagridview是手工绑定还是自动绑定?
       貌似你已经有答案了dgv.datasource !=null就是绑定了问题2:我有2个按钮,一个是修改,一个是保存,用于控制datagridview。现在的问题是保存后datatable不更新,再次点修改,再保存就可以更新。不明白是为什么?
      我听不太懂你的问题,保存后用DGV.Refresh()试试有没有更新界面乎?
     
      

  2.   

    gv_Drug.DataSource = conn.dt;
      conn.da.Update(conn.dt);
    你反过来写试试呢?
     conn.da.Update(conn.dt);
    gv_Drug.DataSource = conn.dt;
     
      

  3.   

            private void button5_Click(object sender, EventArgs e)
            {
                try
                {
                    button5.Enabled = false;
                    button6.Enabled = true;
                    //conn.dt = gv_Drug.DataSource as DataTable;                conn.da.Update(conn.dt);
                    gv_Drug.DataSource = conn.dt;
                    conn.dt.AcceptChanges();
                    gv_Drug.ReadOnly = true;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }现在的代码是这样的,问题依旧,如果用conn.dt = gv_Drug.DataSource as DataTable;也不行,报错说dt等于null
      

  4.   

    我找到问题了,因为我的第一次绑定是手工绑定,这时候datagridview.datasource是空的。
    所以conn.dt = gv_Drug.DataSource as DataTable;无效
    这时  conn.da.Update(conn.dt);
      gv_Drug.DataSource = conn.dt;
    没有作用但是怎么解决这个问题,还不知道
      

  5.   

    呵呵,搞定了
      private void button6_Click(object sender, EventArgs e)
      {
      gv_Drug.ReadOnly = false; //gv_Drug是datagridview对象
      button6.Enabled = false; //button6是修改铵钮
      button5.Enabled = true; //button5是保存铵钮
      gv_Drug.datasource=conn.dt;
      }
    private void button5_Click(object sender, EventArgs e)
      {
      try
      {
      button5.Enabled = false;
      button6.Enabled = true;
      conn.dt = gv_Drug.DataSource as DataTable;  conn.da.Update(conn.dt);
      gv_Drug.DataSource = conn.dt;
      conn.dt.AcceptChanges();
      gv_Drug.ReadOnly = true;
      }
      catch (Exception ex)
      {
      MessageBox.Show(ex.ToString());
      }
      }
      

  6.   

    刚开始的conn.dt是否没有填充过数据而是空的,也没有绑定?
    如果是,你应该在窗口的Load事件就用TableAdapter填充表,并使用gv_Drug.DataSource = conn.dt进行数据绑定,而不是直到保存时才绑定