Visual C#中灵活使用DataView

visual

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

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

  

  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来实现了。

时间: 2024-10-05 17:10:29

Visual C#中灵活使用DataView的相关文章

Visual Basic中窗体控制特效代码收集

visual|控制 在Visual Basic中如何拖动窗体或控件 现在的许多Windows下的应用程序,都采用了图形化的界面,例如:WINAMP等!这样做的好处是可以使程序界面更漂亮生动,更具吸引力.但是在这样的界面下就不能使用Windows原来的标题条了,否则会影响界面的美观性.那么在没有标题条的情况下如何用鼠标拖动窗体呢?或者拖动其它的控件呢? 其实,采用API函数调用很容易实现,下面我们以拖动窗体(Form1)为例来具体讲一下实现方法: 1.新建立一个项目,名称为:test.vbp. 2

Visual C++中Tab View的多种实现方法_C 语言

本文实例讲述了Visual C++中Tab View的多种实现方法,分享给大家供大家参考.具体如下: 一.引言 标签控件(Tab Control)是VC++编程中经常使用的控件之一,它允许在单个对话框或窗口中设置多个页面,每个页面代表一组控件.当某个页面的标签被选中时,该页 面内的控件就会被显示出来.标签控件使得在有限的窗口空间内可以显示更多的信息,而且分类清晰.同时,VC++提供了以文档/视图 (Document/View)结构方式开发应用程序的简单方法,在文档中保存数据,在视图中显示数据.无

在Visual J++中编写ASP COM组件

visual Java是一种以网络为中心的编程语言,许多只使用ASP脚本难以完成的任务可以用Java轻松地实现.同时,扩展ASP应用最好的方法莫过于加入COM组件.那么,可以利用Java为ASP开发组件吗?本文通过实例,说明了在Visual J++环境下开发COM组件的具体过程. 一.概述 自Java问世以来,各种开发工具.开发环境不断出现.这些环境和工具面向不同层次的用户,具有各自的优点.那么,使用Visual J++作为Java开发平台又有哪些优点呢?粗略地讲,这些优点包括: 熟悉的开发环境

Visual Foxpro中的多用户及数据缓冲问题

visual|数据|问题 主题:Visual Foxpro中的多用户及数据缓冲问题 绍 很多狐友(Foxers)都是从Dbase―FoxBase―Foxpro―VFP这样一条路走过来的,如果说从FoxBase 到Foxpro是一次飞跃,那么从Foxpro到VFP就是一次升华.漫漫编程路上的两次大变化都伴随着升级的兴奋与适应的痛苦,惯性思维往往使我们容易忽略新版本的新内容.我们先来看看下面这个在表单中编辑记录的例子: 在Foxpro 2.X时代,我是这样设计的: 1. 在屏幕上放置与表中字段对应的

在Visual C#中运用API函数获取系统信息

visual|函数 API函数是构筑Windows应用程序的基石,是Windows编程的必备利器.每一种Windows应用程序开发工具都提供了间接或直接调用了Windows API函数的方法,或者是调用Windows API函数的接口,也就是说具备调用动态连接库的能力.Visual C#和其它开发工具一样也能够调用动态链接库的API函数.本文中笔者就结合实例向大家介绍在Visual C#中如何调用各种返回值的API,该实例就是一个通过API函数调用获取系统信息的程序. 在Visual C#中调用

在Visual J++中编写ASP COM组件(转)

visual Java是一种以网络为中心的编程语言,许多只使用ASP脚本难以完成的任务可以用Java轻松地实现.同时,扩展ASP应用最好的方法莫过于加入COM组件.那么,可以利用Java为ASP开发组件吗?本文通过实例,说明了在Visual J++环境下开发COM组件的具体过程. 一.概述 自Java问世以来,各种开发工具.开发环境不断出现.这些环境和工具面向不同层次的用户,具有各自的优点.那么,使用Visual J++作为Java开发平台又有哪些优点呢?粗略地讲,这些优点包括: 熟悉的开发环境

在Visual C++中使用内联汇编

一.内联汇编的优缺点 因为在Visual C++中使用内联汇编不需要额外的编译器和联接器,且可以处理Visual C++中不能处理的一些事情,而且可以使用在C/C++中的变量,所以非常方便.内联汇编主要用于如下场合: 1.使用汇编语言写函数: 2.对速度要求非常高的代码: 3.设备驱动程序中直接访问硬件: 4."Naked" Call的初始化和结束代码. //(."Naked",理解了意思,但是不知道怎么翻译,大概就是不需要C/C++的编译器(自作聪明)生成的函数初

在Visual Studio中以编程方式自定义SharePoint网站入门

Microsoft Visual Studio 2005 集成开发环境 (IDE) 提供了用于自定义基于 Windows SharePoint Services 的网站的首选环境.例如,您可以创建 Windows 应用程序.控制台应用程序或类库,以及基于 浏览器的 Web 应用程序(在 Visual Studio 中,此应有程序称作"ASP.NET 网站"或"Web 应用程序" )和实现 Windows SharePoint Services 对象模型的 Web 服

在Visual C++中定制AppWizard (一)

第一部分 AppWizard及其工作原理 AppWizard即应用程序向导,它是Visual Studio开发环境中强大的编程工具之一,用它可以创建各种不同类型的程序.比如Win32应用.ATL.MFC应用等等.在Windows的术语中,向导(wizard)一词指得是一个应用程序,它的一个主要特点就是提供一系列对话框引导用户进行必要的选择来完成给定的任务.VC中的应用程序向导--AppWizard提供一系列特定工程类型对话框来让程序员定义各种类型的新工程.其中每一个对话框都显示一些用来指定工程类