DataView 直译是 数据视图。由数据库表(Table)映射到DataTable不难联想到 数据库视图 映射到 DataView。
数据库中视图是一个虚表,数据库中存储的只是一句查询SQL语句,每次程序访问此视图时,原理类似于执行此SQL语句,生成一个临时表,然后程序再对此临时表操作,结果对实表一样有效。
视图通常只是为了简化程序的查询操作,允许在一个实表上建立多个视图
同样的,DataView表示用于排序、筛选、搜索、编辑和导航的 DataTable 的可绑定数据的自定义视图。
举一个简单例子来说明它的作用。
有时候你想把DataTable的一部分数据绑定到控件1,而把DataTable的全部数据绑定到控件2,那么利用DataView可以简单地实现。
下面来看看DataView 的每个功能实现。
1、排序
创建一个空页面Default.aspx,在页面中添加一个按钮和一个GridView控件
<div>
<asp:Button ID="Button1" runat="server" Text="按id排序" OnClick="Button1_Click" />
<br />
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</div>
在后台代码中,我们手动创建一个DataTable数据源,以下的操作都基于此数据源。如下
//创建数据源
private DataTable CreateTable()
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("id", typeof(int)));
dt.Columns.Add(new DataColumn("name", typeof(string)));
int[] ids ={ 8, 5, 4, 3, 1, 9, 6, 7, 2 };
DataRow dr;
for (int i = 0; i < ids.Length; i++)
{
dr = dt.NewRow();
dr[0] = ids[i];
dr[1] = "not_" + ids[i].ToString();
dt.Rows.Add(dr);
}
return dt;
}
在Page_Load中添加如下代码,初使化页面
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (ViewState["data"] == null)
{
ViewState["data"] = CreateTable();
}
this.GridView1.DataSource = ViewState["data"] as DataTable;
this.GridView1.DataBind();
}
}
对Button1的Click事件实现对ID列的排序
//排序
protected void Button1_Click(object sender, EventArgs e)
{
DataView dv;
if (ViewState["data"] != null)
{
dv = (ViewState["data"] as DataTable).DefaultView;
}
else
{
dv = CreateTable().DefaultView;
}
//字符串不区分大小写
dv.Sort = "ID ASC";
this.GridView1.DataSource = dv;
this.GridView1.DataBind();
}
页面运行的初始状态如下
单击按钮后如下
单击按钮后如下
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bfcady/archive/2009/01/08/3735570.aspx