private DataTable MakeTable()
{
DataTable dt = new DataTable("本地數據表");
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("商品名稱", typeof(string));
dt.Columns.Add("商品價格", typeof(decimal));
dt.Rows.Add(1, "足球", 57.5m);
dt.Rows.Add(2, "籃球", 64.5m);
dt.Rows.Add(3, "網球", 6.5m);
dt.Rows.Add(4, "網球拍", 388.5m);
return dt;
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Session["Table"] = MakeTable();
DataGrid1.DataSource = (DataTable)Session["Table"];
DataGrid1.DataBind();
}
}
前台:Label1 + TextBox1 + Button1
protected void Button1_Click(object sender, EventArgs e)
{
DataTable dt = (DataTable)Session["Table"];
DataView dv = new DataView(dt);
// 模糊查詢:商品名稱包含輸入文字
dv.RowFilter = "商品名稱 LIKE '%" + TextBox1.Text.Trim() + "%'";
DataGrid1.DataSource = dv;
DataGrid1.DataBind();
}
輸入「網」→ 查詢結果:
ID 商品名稱 商品價格 3 網球 6.5 4 網球拍 388.5
前台:Label2 + TextBox2 (最小價) + TextBox3 (最大價) + Button2
protected void Button2_Click(object sender, EventArgs e)
{
DataTable dt = (DataTable)Session["Table"];
DataView dv = new DataView(dt);
// 價格區間:>= 最小價 AND <= 最大價
dv.RowFilter = "商品價格 >= " + TextBox2.Text.Trim() +
" AND 商品價格 <= " + TextBox3.Text.Trim();
DataGrid1.DataSource = dv;
DataGrid1.DataBind();
}
輸入 10 ~ 70 → 查詢結果:
ID 商品名稱 商品價格 1 足球 57.5 2 籃球 64.5
DataView.RowFilter 完全能達到 SQL SELECT 語句同等功能,語法與作用極為相似,適用於本地 DataTable 查詢、未寫入資料庫的資料、或已修改未同步的資料場景。