摘要:自製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); } }