自製ASP.NET 查詢狀態設定物件

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