忧郁的天空,杂乱的世界
程序人生,除了coding我们还可以做得更多更好!
博客园
首页
社区
新随笔
联系
订阅
管理
随笔-48 评论-309 文章-0 trackbacks-3
灵活使用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来实现了。
posted on 2005-05-23 10:43
湘南和也
阅读(4831)
评论(4)
编辑
收藏
网摘
所属分类:
.net技术
评论:
#1楼
2005-05-23 11:09 |
idior
我还以为讲 .net的新控件呢.
回复
引用
查看
#2楼
[
楼主
] 2005-05-24 11:29 |
湘南和也
我的想法是大家多交流交流,基础的东西也可以让自己领悟很多。做技术不一定非但专注在新和花活上面。
基础打好了,学新的东西也可以触类旁通,甚至举一反三呢。
回复
引用
查看
#3楼
2005-05-24 18:54 |
叶漂
搞不懂你那些[intI - 1 + 1]是什么用意,什么又-1又+1啊?
回复
引用
查看
#4楼
[
楼主
]
2005-05-26 13:47 |
湘南和也
楼上的看的真仔细啊
那段程序是我看到之前的某程序员写的,后面的是我修改的。
至于那个-1+1我也觉得很郁闷,不知道它想表达什么
回复
引用
查看
新用户注册
刷新评论列表
标题
姓名
主页
Email
(博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
网站首页
新闻频道
社区
小组
博问
网摘
闪存
找找看
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索
相关文章:
学习asp.net比较完整的流程
小菜编程成长记(八 反射——程序员的快乐!)
使用Visual Studio2005入门.Net2.0系列视频教程
ASP.NET AJAX入门系列(2):使用ScriptManager控件
关于自助终端机的后台监控管理系统的开发
当当网是如何使用ASP.NET实现的?
诚邀有精通.NET技术的项目经理加盟!!!广州猎头职位!!
jQuery好像不是仅限于.net技术吧
相关链接:
所属分类的其他文章:
程序编码应保持良好的规范(C#)
web开发中让我郁闷不已的小失误
关于卸载windows service后再重新安装遇到的特殊问题
完成我的第一个windows service的开发
学习socket编程之一:用smtp协议发送邮件
实战服务器环境设置
灵活使用DataView
关于在.net程序中调用数据库的DTS包
新工作中的小收获
关于.net环境中应用DB2数据库的问题
最新IT新闻:
最富有科技公司:中移动310亿美元居首
华盛顿抛弃微软Office 选择Google Apps
微软:WGA验证每小时黑屏是善意提醒
研究表明上网可以提高记忆力
为什么叫Windows 7?
<
2005年5月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
与我联系
发短消息
搜索
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
我的新闻
最新评论
我的标签
留言簿
(14)
给我留言
查看留言
随笔分类
.net技术(19)
备考心得(1)
生活感悟(25)
数据库技术(3)
随笔档案
2005年8月 (1)
2005年7月 (7)
2005年6月 (3)
2005年5月 (9)
2005年4月 (5)
2005年3月 (17)
2005年2月 (4)
2004年11月 (2)
真心朋友
猩猩点灯
哈哈,一个好哥们
最新评论
1. re: 基于.net的快速开发思想
逻辑层和数据层之间是不是要增加一个接口层比较好。用来存放接口和抽象类的。
--梁逸晨
2. re: 如何实现这个sql查询?
@陈晨
他越该越错吧~~~第一楼的就是正确答案~~
--玩到底
阅读排行榜
1. SQL数据库终极恢复??(9585)
2. 一个功能强大超级好用的图表组件Dundas Chart(5737)
3. 灵活使用DataView(4831)
4. 如何实现这个sql查询?(3509)
5. 基于.net的快速开发思想(3201)
6. 关于.net环境中应用DB2数据库的问题(2765)
7. ASPJPEG组件的bug(2413)
8. 程序编码应保持良好的规范(C#)(2217)
9. 新工作中的小收获(2157)
10. 被人遗忘的控件(一)(1939)
评论排行榜
1. SQL数据库终极恢复??(26)
2. 对博客园首页的一些建议(25)
3. 基于.net的快速开发思想(22)
4. 如何实现这个sql查询?(22)
5. 新工作中的小收获(21)
6. 系统设计应关注并发性(17)
7. 程序编码应保持良好的规范(C#)(17)
8. 一个功能强大超级好用的图表组件Dundas Chart(14)
9. .net之不可思议事件(一)(13)
10. 关于.net环境中应用DB2数据库的问题(12)