解决方案 »

  1.   

    你原来怎么绑定数据的,重新再绑定一次就好了。像DataGridView无非是绑定DataSource之类的
      

  2.   

    1.如果不是你的写的代码,搜索一下(DataGridView的name).DataSource看看是怎么赋值的。
    2.照着上述这种做法重新做一遍:
    XXX.DataSource = null;
    XXX.DataSource = ???;
    XXX表示DataGridView的实例
    ???表示要绑定的数据源。
      

  3.   

    跟为 DataSource属性赋值没有关系。不要以为会给绑定一个数据赋值并且显示出来数据这么简单。使用根本不能用来感知集合修改的数据源,例如List<T>或者DataTable之类的,也可以作为数据源,但是这些数据源根本不具有相应功能。绑定什么接口的数据源才能让datagridview感知到集合的新增、删除(一种),或者是数据行内容的变化(第二种),你找一本“对的”入门书看看datagridview的讲解就知道了。这个不是靠自己猜出来的,是要看一下书的。
      

  4.   

    用DataTable是可以感知到集合更改的,控件也会变化
    前提是DataTable只能增删改,不要重新new,否则你绑定的DataTable和你new过的DataTable就已经不是同一个对象了(它是引用类型的)
    而且楼主纯靠拖控件的方式,完全没有后台代码的话,你所谓的"更新数据源"到底跟新的什么玩意,数据库表吗??
      

  5.   

    我是直接在控件上对数据源进行绑定,看了下代码,他是通过连接数据库,自动生成了一个继承与SqlDataAdapter的新类和一个继承于dataset的派生,然后,自动生成的代码是用Adapter的fill将数据库中某张表填充到派生的dataset的对象中,在有一个bindsource的对象,datasource是派生的dataset对象,在把bindingsource绑定到datagridview的datasource属性中,我重新对数据集进行了Fill,并重新绑定了datasorce,可以实现了
      

  6.   

    DataGridView更新数据、插入数据示例
    //更新按钮事件设置
    private datatier dt = new datatier();//定义datatier类型的私有字段
     private void btn_update_Click(object sender, EventArgs e)
            {
                //调用datatier对象的Update()方法,更改数据库中的信息
                dt.Update(new Instance() { Name = txt_name_update.Text, phone = txt_phone_update.Text });
                dataGridView1.DataSource = dt.Select();//更新dataGridView1控件中的信息
                Clear();//清空TextBox控件中的文本
            }//codego.net/1/1/1/
    //自定义类型的私有字段设置
     public void Update(Instance it)
            {
                SqlConnection sc = GetConnection();//调用GetConnections()方法,得到连接对象
                try
                {
                    sc.Open();//打开到数据库的连接
                    SqlCommand cmd = new SqlCommand(//创建SqlCommand对象
                        "update tb_friend set phone=@phone where names=@names", sc);
                    cmd.Parameters.Add("@names", SqlDbType.VarChar).Value = it.Name;//向SqlCommand对象添加参数
                    cmd.Parameters.Add("phone", SqlDbType.VarChar).Value = it.phone;//向SqlCommand对象添加参数
                    cmd.ExecuteNonQuery();//执行SqlCommand对象中的SQL命令
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    if (sc.State == ConnectionState.Open)//判断是否连接数据库
                    {
                        sc.Close();//如果已经连接则关闭连接
                    }
                }
            }
    //插入按钮事件 private void button1_Click(object sender, EventArgs e)
            {
                //调用datatier对象的Add()方法向数据库添加数据
                dt.Add(new Instance() { Name = txt_name_add.Text, phone = txt_phone_add.Text });
                dataGridView1.DataSource = dt.Select();//更新dataGridView1控件中的信息
                Clear();//清空TextBox控件中的文本
            }
    //调用dt类型的Add添加信息
     public void Add(Instance it)
            {
                SqlConnection sc = GetConnection();//调用GetConnections()方法,得到连接对象
                try
                {
                    sc.Open();//打开到数据库的连接
                    SqlCommand cmd = new SqlCommand(//创建SqlCommand对象
                        "insert into tb_friend(names,phone) values(@names,@phone)", sc);
                    cmd.Parameters.Add("@names", SqlDbType.VarChar).Value = it.Name;//向SqlCommand对象添加参数
                    cmd.Parameters.Add("phone", SqlDbType.VarChar).Value = it.phone;//向SqlCommand对象添加参数
                    cmd.ExecuteNonQuery();//执行SqlCommand对象中的SQL命令
                }
                catch (Exception ex)//捕获异常
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    if (sc.State==ConnectionState.Open)//判断是否连接数据库
                    {
                        sc.Close();//如果已经连接则关闭连接
                    }
                }
            }