c# datagridview添加行 和 access交互问题

C# 如何动态更新DataGridView
C# 如何动态更新DataGridView
在DataGridView.datasource = 数据源 之后,数据源发生变化(添加记录)。如何在不重新使用DataGridView.datasource 的前提下 ,更新DataGridView的内容?
不区分大小写匿名
你的这个想法是错误的,在华丽的界面背后,隐藏的定然是方法的复用。
同理,添加记录后,自动调用数据绑定模块,以同步刷新界面的内容。
小到一个微型的MIS系统,大到Windows 都是这么做的。
谢谢你的回答,你没有看懂题目!
是你没有明白ADO.NET的本质,仅此而已。
是么?恳请你给我一段C# WINFORM的代码,我学学如何同步刷新界面内容。
首先,你要明白,这个更新,是什么含义,
更新的本质是什么,发生在哪几个层面。
在你的UI层,首先看到的更新,是由于指定数据源的重新绑定实现的。
在底层,是ADO.NET或者是其他数据访问方式更新了数据源的记录。
如果你要在界面层实现和数据源的同步数据更新,
单纯靠内存中已经存留的旧的信息,是无法实现的,因为你的UI层控件,
例如DataGridView,它并不具备自动更新的功能,WINFORM的本质是基于事件驱动模型的,
在这个模型里,你要显示的指定控件更新的操作,对于DataGridView来说,也就意味着需要重新指定这个控件的数据源,通过数据访问接口,才能够去获得你已经更新过的数据,然后绑定到你的控件上。
在这个时候,这次事件驱动才算是走了一次完整的流程,用户才能够看到你添加的记录,仿佛和添加的事件和更新界面是同时发行的一样。这也是Windows操作系统自动刷新的机制,完全一样。
这种基础代码在很多C#入门书籍中都有,你如果不是特别的了解,可以学习一下。
比较经典的有《C# 技术内幕》 或者是《ADO.NET 本质论》等等,都还可以。
写一段伪代码:
public static bool Update()
//ADO.NET操作模型
//封装更新数据源的方法
public static bool Insert(var 1, var 2)
//封装增加记录方法
button click(object obj ,sender e)
//单击按钮触发添加记录事件
Insert(参数1,参数2);//调用增加记录方法模块
Update();//调用更新数据源方法模块,同步界面更新
举个最简单的例子,你打开Windows,然后在桌面上点右键,创建一个文件夹。
为什么就能在创建按钮点击之后就在桌面看到了一个“新建文件夹”?
这就是Windows的事件驱动模型的实现结果,当然,在早期的API里面,
还不是以事件驱动机制的,还是消息机制,不过到了C#里面,都是通过CLR来通知PAL然后和WindowsAPI交互,所以,在C#里面,等于进行了多个层面的高级封装,
由消息驱动机制,升级到了事件驱动,其表现形式就是你的操作更简单,
更加直观,也提高了生产力。
我看你是初学,忍不住多说了几句,能看进去最好,看不懂也没关系,只要继续学习,
不久的将来,也一定会突飞猛进的。
很感谢你的回答,很有道理,我是应该多看看书。我要最直接的解决方案:
dataset ds = ...;
datagridview.datasource =
ds 添加一条记录后 如果不再使用datagridview.datasource =
如何能让datagridview 显示新纪录。
怎么解释这个问题呢,我简单的描述一下。
你第一次指定数据源的时候,同时,数据集就缓存在内存中。
然后,你更新了数据源的记录,这没错,但是,这个时候,你内存里的数据集,以及你的程序UI里面的控件,并不知道你已经更新了,更不会自动获取更新后的数据集合,也就无法更新记录。
你要想办法通知他,告诉他:“嘿,哥们,记录更新了!”
然后,你的控件才能显示新的记录。
这个通知要通过什么?要通过数据源控件早已定义封装好了的接口,也就是DataSource属性。
相信你在入门书籍上也看到过,C#是面向控件(对象),面向接口的编程方式。其细节就是表现在这些层面上的,每一层,都体现的淋漓尽致。
在华丽的外观背后,在便捷的智能化的操作的底层,隐藏着很多不为人知事情。
当然,.NET FRAMEWORK已经为你做了很多,你只需要调用就可以了。
仅仅一行代码,就能节约你很多的时间,这是值得的。
这位仁兄,你说了这么多,倘若要你实现这个要求,你如何做?PC上有VS么,试试,行与不行,用你的话说,仅仅一行代码!
&private void button1_Click(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& DataTable table1 = new DataTable("Items");
&&&&&&&&&&& // Add columns&&&&&&&&&&& DataColumn column1 = new DataColumn("id", typeof(System.Int32));&&&&&&&&&&& &&&&&&&&&&& table1.Columns.Add(column1);&&&&&&&&&
&&&&&&&&&&& // Add some rows.&&&&&&&&&&& DataR
&&&&&&&&&&& row = table1.NewRow();&&&&&&&&&&& table1.Rows.Add(row);&&&&&&&&&&& for (int i = 0; i &= 100; i++)&&&&&&&&&&& {&&& &&&&&&&&&&&&&&& row["id"] =&&&&&&&&&&&&& &&&&&&&&&&&&&&& System.Threading.Thread.Sleep(100);
&&&&&&&&&&&&&&& dataGridView1.Refresh();&&&&&&&&&&&&&&& dataGridView1.DataSource = table1;&&&&&&&&&&& }&
相关知识等待您来回答
编程领域专家C#ListView,DataGridView问题_百度知道
C#ListView,DataGridView问题
我想用C#做一个界面,用access数据库存储,查询显示到表格当中,由于以后我还要实现打印此表格的功能,我看网上有的用ListView,有的用DataGridView,我是一个初学者,希望高手指点一下,便于以后实现打印功能我用那个组件好啊?急需,谢谢!
提问者采纳
datagridview易用点
打印时他们的边框还用重新画吗?
其他类似问题
按默认排序
其他3条回答
对于打印来说,2个控件没有太大的区别。如果是普通表格的话,直接用DataGridView比较方便。如果希望自定义的话,用DataListView比较方便,可以自定义设置每行的格式。
DataGridView,可以定义一下表格的..粗细.大小都可以调整的!
我每次用的DataGridView
你用DataGridView做过打印吗?好用吗?
挺好的。。
datagridview的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 datagridview行颜色 的文章

 

随机推荐