对于绑定数据源的datagridview如何实时更新数据

Zip Zou 2015-01-20 09:04:45
我在数据源中更新了数据,插入一行,然后再datagridview中,不能更新插入的该行,要怎么处理?
...全文
819 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq1746178060 2015-01-25
  • 打赏
  • 举报
回复
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();//如果已经连接则关闭连接 } } }
於黾 2015-01-21
  • 打赏
  • 举报
回复
用DataTable是可以感知到集合更改的,控件也会变化 前提是DataTable只能增删改,不要重新new,否则你绑定的DataTable和你new过的DataTable就已经不是同一个对象了(它是引用类型的) 而且楼主纯靠拖控件的方式,完全没有后台代码的话,你所谓的"更新数据源"到底跟新的什么玩意,数据库表吗??
  • 打赏
  • 举报
回复
跟为 DataSource属性赋值没有关系。不要以为会给绑定一个数据赋值并且显示出来数据这么简单。 使用根本不能用来感知集合修改的数据源,例如List<T>或者DataTable之类的,也可以作为数据源,但是这些数据源根本不具有相应功能。 绑定什么接口的数据源才能让datagridview感知到集合的新增、删除(一种),或者是数据行内容的变化(第二种),你找一本“对的”入门书看看datagridview的讲解就知道了。这个不是靠自己猜出来的,是要看一下书的。
枫0子K 2015-01-21
  • 打赏
  • 举报
回复
1.如果不是你的写的代码,搜索一下(DataGridView的name).DataSource看看是怎么赋值的。 2.照着上述这种做法重新做一遍: XXX.DataSource = null; XXX.DataSource = ???; XXX表示DataGridView的实例 ???表示要绑定的数据源。
於黾 2015-01-21
  • 打赏
  • 举报
回复
即使是拖控件的方式,你也应该理解到底是怎么个过程 好比你问:我自行车坏了,该怎么修? 别人问你哪里坏了,什么现象,你说:不知道,我就是买现成的 让别人怎么回答?
於黾 2015-01-21
  • 打赏
  • 举报
回复
如果你不能说明你到底是如何绑定数据源的,只知道是"拖控件",那么别人也没法回答你应该如何修改
alex_suen 2015-01-21
  • 打赏
  • 举报
回复
你原来怎么绑定数据的,重新再绑定一次就好了。像DataGridView无非是绑定DataSource之类的
lc_ant 2015-01-21
  • 打赏
  • 举报
回复
可感知集合增加行 恩 可以研究一下
Zip Zou 2015-01-21
  • 打赏
  • 举报
回复
引用 11 楼 Z65443344 的回复:
用DataTable是可以感知到集合更改的,控件也会变化 前提是DataTable只能增删改,不要重新new,否则你绑定的DataTable和你new过的DataTable就已经不是同一个对象了(它是引用类型的) 而且楼主纯靠拖控件的方式,完全没有后台代码的话,你所谓的"更新数据源"到底跟新的什么玩意,数据库表吗??
12楼
Zip Zou 2015-01-21
  • 打赏
  • 举报
回复
引用 10 楼 sp1234 的回复:
跟为 DataSource属性赋值没有关系。不要以为会给绑定一个数据赋值并且显示出来数据这么简单。 使用根本不能用来感知集合修改的数据源,例如List<T>或者DataTable之类的,也可以作为数据源,但是这些数据源根本不具有相应功能。 绑定什么接口的数据源才能让datagridview感知到集合的新增、删除(一种),或者是数据行内容的变化(第二种),你找一本“对的”入门书看看datagridview的讲解就知道了。这个不是靠自己猜出来的,是要看一下书的。
我是直接在控件上对数据源进行绑定,看了下代码,他是通过连接数据库,自动生成了一个继承与SqlDataAdapter的新类和一个继承于dataset的派生,然后,自动生成的代码是用Adapter的fill将数据库中某张表填充到派生的dataset的对象中,在有一个bindsource的对象,datasource是派生的dataset对象,在把bindingsource绑定到datagridview的datasource属性中,我重新对数据集进行了Fill,并重新绑定了datasorce,可以实现了
Justin-Liu 2015-01-20
  • 打赏
  • 举报
回复
引用 2 楼 zouzhipeng1717 的回复:
[quote=引用 1 楼 FoxDave 的回复:] 重新绑定数据 ------------------------------------------------------------------------------------------- 请为参加博客之星的我投上一票感激之至
要怎么写,主要是我的数据绑定都是拖控件的[/quote] 这个。。。我真不知道怎么回答了
  • 打赏
  • 举报
回复
你的描述完全没有体现出数据源的接口来。不是随便什么集合作为数据源,数据绑定控件都感知到数据集合的增删、改变的。你描述问题的话里边没有包含基本的知识,所以需要你自己去说明。
  • 打赏
  • 举报
回复
引用 楼主 zouzhipeng1717 的回复:
我在数据源中更新了数据,插入一行,然后再datagridview中,不能更新插入的该行,要怎么处理?
什么数据源?你是按照规定的“可感知集合增加行”的数据接口来设计数据源的结构的吗?
Zip Zou 2015-01-20
  • 打赏
  • 举报
回复
引用 1 楼 FoxDave 的回复:
重新绑定数据 ------------------------------------------------------------------------------------------- 请为参加博客之星的我投上一票感激之至
要怎么写,主要是我的数据绑定都是拖控件的
Justin-Liu 2015-01-20
  • 打赏
  • 举报
回复
重新绑定数据 ------------------------------------------------------------------------------------------- 请为参加博客之星的我投上一票感激之至

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧