摘要:自製ASP.NET 查詢狀態設定物件
為了寫程式的時候,……做輸入資料有一點方便性。
通常,在查詢頁面的查詢控制項,按了查詢後,然後點了列表中的一項,會到另一頁去做新增或編輯。
但此時,按回上一頁按鈕,好死不死使用的是Response.Redirect時,
你上一頁的查詢控制項,又回到原本的空白狀態。
因此需要透過Session記錄查詢狀態,(在按下查詢Button時記錄在Session)
等到回到查詢頁面,發現Session中有值的話,就會設定到控制項還原原本的查詢狀態。
為了這東西。我又寫了一個怪怪的物件。
請參閱。
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
/// <summary>
/// Summary description for PageQuery
/// </summary>
//查詢狀態記錄類別,用來記錄按查詢後的資料狀態
public class PageQuery
{
//查詢條件資料記錄
public Dictionary<string, string> QueryConditionItem
{
get
{
Dictionary<string, string> objQueryConditionItem;
//取得查詢條件物件
if (!DBFunction.IsEmpty(this._page.Session[this.QueryName]))
{
objQueryConditionItem = (Dictionary<string, string>)this._page.Session[this.QueryName];
}
else
{
objQueryConditionItem = new Dictionary<string, string>();
this._page.Session[this.QueryName] = objQueryConditionItem;
}
return objQueryConditionItem;
}
}
private Page _page;
//Session名稱
public string QueryName;
public PageQuery(Page page)
{
this._page = page;
}
//加入查詢狀態
public void AddQueryCondition(string key, string value)
{
QueryConditionItem[key] = value;
this._page.Session[this.QueryName] = QueryConditionItem;
}
//清除查詢狀態
public void ClearQueryCondition()
{
QueryConditionItem.Clear();
this._page.Session[this.QueryName] = QueryConditionItem;
}
//取得查詢狀態
public string GetQueryCondition(string key)
{
if (QueryConditionItem.ContainsKey(key))
{
if (!DBFunction.IsEmpty(QueryConditionItem[key]))
return QueryConditionItem[key];
else
return "";
}
else
return "";
}
}BasePage裝載 Query物件
public class BasePage : System.Web.UI.Page
{
//Query查詢條件狀態保留設定
public PageQuery objQuery;
//建構子
public BasePage()
{
objQuery = new PageQuery(this);
//設定查詢物件使用Session名稱
objQuery.QueryName = "PageQuery";
}
}
使用方式:
public partial class QueryPage: BasePage
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
KeyWordSet();
}
}
//***************其他方法*************************//
//將PageList的QueryString 重新設定
public void KeyWordSet()
{
this.TextBox1.Text = base.objQuery.GetQueryCondition("TEXT");
}
//***************資料處理事件*********************//
protected void btnQuery_Click(object sender, EventArgs e)
{
base.objQuery.ClearQueryCondition();
base.objQuery.AddQueryCondition("TEXT",this.TextBox1.Text);
}
}