答案就是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来实现了。
【VisualC#中灵活使用DataView】相关文章:
2025年外省高中学业水平合格性考试成绩转入江苏认定的通告公布03-23
Vb中控件的自动排列03-23
中国大地保险公司实习报告03-23
07年4月北师大“中国古代文学史(一)”串讲(5)03-23
运动主题团日活动策划03-23
2023年广东梅州中考成绩查询时间及查分入口[7月7日起]03-23
2024年江苏中级导游等级考试准考证打印时间及入口(11月18日9:00起)03-23
盐阜大众报报业集团(盐城)公开招聘《东方生活报》编辑记者的公告 2月25日到3月3日报名03-23
2018湖南省农村信用社联合社招聘科技专业人才拟聘公告03-23
