有些时候,我们会把从数据库中取出的信息存到DataTable中。然后是绑定控件也好,还是显示信息也好。但是有些时候,我们会遇到这样情况。就是在我们将想要的信息放到Datatable中之后,有可能会出现一些二次查询或是从这个table中根据一些条件取出一些信息。
当然我们可以再次根据条件去读一次数据库或是XML文件,这样做有时候感觉是在浪费资源,其实在Datatable中有一个select可以进行二次选择的,试一下,感觉不错,现在将程序放上来。仅供参好。例子很简单。
using System;
using System.Data;
using System.Web.UI;
public partial class test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DataTable dt = getDt();
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
}
}
protected void Button1_Click1(object sender, EventArgs e)//筛选
{
this.GridView1.Dispose();
DataTable dt = getDt();
DataRow[] dr = dt.Select("Sex like '%男%'");
for (int i = 0; i < dr.Length; i++)
{
Response.Write("姓名:" + dr[i]["Name"].ToString() + " " + "性别:" + dr[i]["Sex"].ToString() + "<br/>");
}
}
protected void Button2_Click(object sender, EventArgs e)//排序方法1
{
this.GridView1.Dispose();
DataTable dt = getDt();
DataRow[] dr = dt.Select("", "Name desc");
for (int i = 0; i < dr.Length; i++)
{
Response.Write("姓名:" + dr[i]["Name"].ToString() + " " + "性别:" + dr[i]["Sex"].ToString() + "<br/>");
}
}
protected void Button3_Click(object sender, EventArgs e)//排序方法2
{
this.GridView1.Dispose();
DataTable dt = getDt();
DataView dv = dt.DefaultView;
dv.Sort = "Sex asc,Name desc";
DataTable dt2 = dv.ToTable();
for (int i = 0; i < dt2.Rows.Count; i++)
{
Response.Write("姓名:" + dt2.Rows[i]["Name"].ToString() + " " + "性别:" + dt2.Rows[i]["Sex"].ToString() + "<br/>");
}
}
public DataTable getDt()
{
DataTable dt = new DataTable();
DataColumn dc = new DataColumn("Name", System.Type.GetType("System.String"));
dt.Columns.Add(dc);
dc = new DataColumn("Sex", System.Type.GetType("System.String"));
dt.Columns.Add(dc);
for (int i = 0; i < 10; i++)
{
DataRow dr = dt.NewRow();
dr["Name"] = "小明" + i.ToString();
if (i > 0 && i % 2 == 0)
{
dr["Sex"] = "男";
}
else
{
dr["Sex"] = "女";
}
dt.Rows.Add(dr);
}
return dt;
}
}