Visual C#中灵活使用DataView

2016-02-19 15:54 30 1 收藏

图老师小编精心整理的Visual C#中灵活使用DataView希望大家喜欢,觉得好的亲们记得收藏起来哦!您的支持就是小编更新的动力~

【 tulaoshi.com - 编程语言 】

  可能大家都知道dataview这个名词的概念,但也许不是很多人可以说清楚在.net架构中它的应用范围和程度。比如:究竟datagrid和repeater这些控件是如何和数据关联起来的?很多人会告诉我是通过dataset。这显然是正确的,但究竟最根本最直接的是通过什么联系起来的呢?

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  答案就是dataview。其实下面的语句:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

DatagridTC.DataSource = dtRst;DatagridTC.DataBind();

  在工作的时候,它等效于:

DatagridTC.DataSource = ds.Tables[0].DefaultView;DatagridTC.DataBind();

  dataset都是通过数据视图将数据呈现在控件上面的。那如何才能做到物尽其用呢?如果通过灵活地使用dataview让我们的程序更简洁,性能更好呢?下面通过一个例子来说明:一段程序想实现将dataset已有的一个datatable重新排序。

  某个写法是:

  

dt = ds.Tables[0].Copy();        dt.Clear();        int intNewID = 0;        for(int intI = 0;intI  ds.Tables[0].Rows.Count;intI++)        {          dr = dt.NewRow();          dr["DateType"] = ds.Tables[0].Rows[intI - 1 + 1]["DateType"].ToString();          dr["TCOrder"] = ds.Tables[0].Rows[intI - 1 + 1]["TCOrder"].ToString();          dr["TimeClass_ID"] = intNewID;          dr["TimeClass_Name"] = ds.Tables[0].Rows[intI - 1 + 1]["TimeClass_Name"].ToString();          dr["Chn_NameLocal"] = ds.Tables[0].Rows[intI - 1 + 1]["Chn_NameLocal"].ToString();          dr["User_Name"] = ds.Tables[0].Rows[intI - 1 + 1]["User_Name"].ToString();          dr["User_ID"] = ds.Tables[0].Rows[intI - 1 + 1]["User_ID"].ToString();          dt.Rows.Add(dr);          dt.AcceptChanges();          intNewID++;        }        dtRst = dt.Copy();        dtRst.Clear();        FoundRow = dt.Select("1 = 1", "TimeClass_Name, DateType, TCOrder");        for(int intI = 0;intI  FoundRow.Length;intI++)        {          dr = dtRst.NewRow();          dr["DateType"] = FoundRow[intI]["DateType"].ToString();          dr["TCOrder"] = FoundRow[intI]["TCOrder"].ToString();          dr["TimeClass_ID"] = FoundRow[intI]["TimeClass_ID"].ToString();          dr["TimeClass_Name"] = FoundRow[intI]["TimeClass_Name"].ToString();          dr["Chn_NameLocal"] = FoundRow[intI]["Chn_NameLocal"].ToString();          dr["User_Name"] = FoundRow[intI]["User_Name"].ToString();          dr["User_ID"] = FoundRow[intI]["User_ID"].ToString();          dtRst.Rows.Add(dr);          dtRst.AcceptChanges();        }        DatagridTC.DataSource = dtRst;        DatagridTC.DataBind();  另外一个写法是:DataView dv = ds.Tables[0].DefaultView;        dv.Sort = "TimeClass_Name, DateType, TCOrder";        DatagridTC.DataSource = dv;        DatagridTC.DataBind();

  显然方法二从代码上就简洁多了,更重要的是它不要再新创建dataset等,减少了内存和CPU的消耗。

  因此大家在遇到需要排序或者过滤数据的时候,要多想想可否使用dataview来实现了。

来源:https://www.tulaoshi.com/n/20160219/1610657.html

延伸阅读
如何于Windows Form控件中捕捉按键向来是许多程序员所关心的课题,基本上,标准的KeyUp、KeyDown与KeyPress事件就足以去捕捉并处理按键。然而问题在于,并非所有的控件会在所有的情况下为所有的按键操作产生这些事件。 图CH8_DemoForm004.cs运行画面 如果您希望不管控件的状况如何,都能够顺利地捕捉Windows Form控件中的...
在我的上一篇文章《C#中使用XML读取XML》中和大家讨论了如何使用.NET Framework中提供的类在C#中读取XML以及读取的一些相关概念,那么今天就说一说如何在C#中编写XML文档,起初我觉得用编程的方式去编写XML简直就是自讨苦吃,后来想想还是觉得挺有用的,我想Microsoft那班家伙能编出这些类来应该不是仅仅为了向比尔i盖茨交差吧!至于它的用...
一、引言 1. 问题的引入 假设你设计的程序已经部署到用户的计算机上,并且能够正常运行了。但是有一天,用户打来了电话他们要求增加新的功能。确定了用户的需求后,你竟然发现原有的软件架构已经无法胜任新增任务的需求你需要重新设计这个应用了!但问题是,就算你又用了一个开发周期完成了用户需要的应用,却不能保证用户的需求...
摘要:本文介绍了Excel对象、C#中的受管代码和非受管代码,并介绍了COM组件在.NET环境中的使用。 关键词:受管代码;非受管代码;Excel对象;动态连接库 引言 Excel是微软公司办公自动化套件中的一个软件,他主要是用来处理电子表格。Excel以其功能强大,界面友好等受到了许多用户的欢迎。在设计应用系统时,对于不同的用户...
命名空间提供了一种组织相关类和其他类型的方式。与文件或组件不同,命名空间是一种逻辑组合,而不是物理组合。在C#文件中定义类时,可以把它包括在命名空间定义中。以后,在定义另一个类,在另一个文件中执行相关操作时,就可以在同一个命名空间中包含它,创建一个逻辑组合,告诉使用类的其他开发人员这两个类是如何相关的以及如何使用它们: n...

经验教程

533

收藏

27
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部