`
pcajax
  • 浏览: 2107453 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

灵活使用DataView

阅读更多

灵活使用DataView

可能大家都知道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来实现了。

<script type="text/javascript"> if ($ != jQuery) { $ = jQuery.noConflict(); } var isLogined = false; var cb_blogId = 7691; var cb_entryId = 160881; var cb_blogApp = "jimmyhsu"; var cb_blogUserGuid = "bd8e310b-63cf-dd11-9e4d-001cf0cd104b"; var cb_entryCreatedDate = '2005/5/23 10:43:00'; </script>
分类: .net技术
分享到:
评论

相关推荐

    C#中灵活使用DataView

    可能大家都知道dataview这个名词的概念,但也许不是很多人可以说清楚在.net架构中它的应用范围和程度。

    ActiveReports for .NET--灵活强大的.Net 报表制作控件

    完全代码集成-使用Microsoft Visual Studio.NET编辑器用C#或VB.NET编写报表的代码,非常灵活。 报表向导-报表向导帮助您开始创建使用集成设计器来定制的简单报表。 图片文件名 运用优势 最终用户报表设计器 ...

    ado[1].net中文手册 学习 ado.net的重要资料

    使用 DataView 事件:描述如何使用 ListChanged 事件接收在 DataView 的内容或顺序得到更新时发出的通知。 使用 DataViewManager 设置默认表视图:描述如何使用 DataViewManager 来管理 DataSet 中每个表的 DataView ...

    Active Report

    数据访问-容易连接包括OLEDB和SqlClient报表数据源包括灵活的xml数据源绑定到Dataset,DataView,DataTable和任何IListSource 控件数据源属性能在运行时修改,生成ad hoc(动态)报表灵活的非绑定数据预览和输出-容易...

    重写DataGridView源码

    C# DataGridView重写。源码及实例 包含自定义图片按钮列,块状背景列,checkbox列,图片与数据并存列。应用初期写的,后期已经基本放弃这种用法,改用更灵活的方式了。有兴趣可以留言交流

    C#开发经验技巧宝典

    0920 在查询过程中灵活定义与使用别名 538 19.11 视图、存储过程和触发器的使用 538 0921 如何正确认识视图 538 0922 如何获取数据库中的全部用户视图 539 0923 如何通过视图修改数据 539 0924 如何正确...

    Visual Studio 2008中的Dundas for .NET组件

    支持使用图像、实体颜色、文本、渐变颜色或者透明效果作为背景图像、图表区域、以及图表图像本身。 ◦阴影效果、抗锯齿、透明效果、及其混合效果,为您提供了您最想要的外观效果 ◦预定义的色彩调色板 ◦自定义...

    C#编程经验技巧宝典

    14 &lt;br&gt;0028 “///”符号的使用技巧 14 &lt;br&gt;0029 使用注释取消程序语句的执行 15 &lt;br&gt;2.2 语句 15 &lt;br&gt;0030 跳转语句GOTO的使用 15 &lt;br&gt;0031 Continue语句的使用 16 &lt;br&gt;0032 Break...

    TouchTreeGrid:Sencha Touch Tree Grid、Basic Grid 和 Accordion 组件示例

    TouchTreeGrid 使用 Sencha 的 Ext.dataview.List 组件以及所有支持的配置、方法和事件。 最近添加了对在 Category 和 Leaf 行中嵌入表单(只读和可编辑)的支持。 CalendarPicker 组件利用 TouchTreeGrid 为手机...

    C#操作EXCEL类

    我只好尝试用C#操作EXCEL类,将DATAVIEW的数据写入EXCEL,然后再生成柱状图,花了2天时间找资料,现在可以生成图了,但是生成的图不好看,细节上无法控制。 我把生成图的代码贴下,我再附上XML方式出EXCEL的代码,...

    JIDE Desktop Application Framework(桌面应用框架) 开发员技术手册

    DataView/DataViewFactory/DataViewListener - create and manage views and view lifecycle ApplicationFeature - create reusable, cross-cutting application features ApplicationAction - Create ...

Global site tag (gtag.js) - Google Analytics