天天看點

【自然架構】 頁面裡的父類—— 改進和想法、解釋

1、 從Control到GridView繼承了多少層?

【自然架構】 頁面裡的父類—— 改進和想法、解釋

      看上面的類圖,遠遠超過三層了吧。如果簡單的用“書上說,繼承不能超過三層”、“組合優于繼承”來衡量的話,那麼.Net架構能得到什麼樣的結論呢?

      是以我說,簡單的依靠“書上說”來作評價是很死闆的,是根本就沒有考慮具體的情況、沒有仔細的了解而随便說的。

      當然我并不是說.Net架構繼承了這麼多層,我就可以多繼承幾層了,我完全沒有這個意思。用不用繼承,繼承的層數,這個要根據具體問題具體分析的,不能簡單的依據書上的話、很随意的做出結論。也不能被書上的話給框框死,就是“盡信書不如無書”吧。

2、 我為什麼要用繼承。

      我們在做CRM這一類的管理程式的時候,需要做很多的清單頁面,這些頁面都共同的幾件事情要做,判斷是否登入、判斷是否有權限通路、驗證URL參數、給屬性指派等(這個是依據自然架構來說的,對于您來說也許沒有這麼多,但是總會有共同的事情吧,如果沒有那就不需要用繼承了)。很顯然這些相同的事情不能讓每個清單頁面都親自處理一遍,這個工作效率就太低了,備援代碼也很多。那麼怎麼辦呢?我想到的就是繼承。建立一個父類,把這些事情都交給父類去做,子類“坐享其成”就可以了。

3、 組合

      上面說了,要把這些共同的事情交給父類去做,那麼是不是說就一定要父類親自去做呢?很顯然不是的。比如驗證是否登入,這個我就是定義了UserManage、BaseUserInfo兩個類來處理的。而在父類裡面就是通過這兩個類來實作判斷是否登入的功能的,這個是不是傳說中的“has A”呢?再弱弱的問一下,這個是不是組合呢?(這個我确實比較模糊,是“has A”比較有把握,但是算不算組合就真的不清楚了,望指教)。

如果要把共同的事情都做成類,然後組合的話,那麼看看我們要做多少?

 判斷是否登入

 判斷是否有權限通路

 判斷URL參數,每個頁面的參數不盡相同,FunctionID是都會傳遞的,DataID是表單頁面的,DepartmentID有時候會有。

 給屬性指派,不同類型的頁面,指派的方法是不一樣的。

      這麼多的“選項”,并不是每一個頁面都需要,有的需要一個,有的需要幾個,那麼是不是要做出選擇呢?如果我有100個清單頁面,每一個頁面都要選擇一下嗎?這100個清單頁面的選擇都是一樣的呀,每個頁面都做一次,是不是重複了呀。是以還是需要做一個父類,讓父類去做選擇,子類還是“坐享其成”就可以了。表單頁面也是相同的情況。是以我覺得即使用了組合,那麼繼承的層數還是這些,不會有任何的影響。呵呵。

      是以我才定義了三個父類:清單頁面的父類、表單頁面的父類、删除頁面的父類。如果繼承隻是這樣的話(一層),那麼我估計大家也就沒有什麼異議了吧。但是我又讓這三個父類繼承了一個父類——PageURL(判斷URL的),估計這個是大家看不慣的地方吧,因為這個用OO的思路是完全解釋不通的,他們有父子關系嗎?沒有。既然沒有,那麼為什麼要用繼承?為什麼不把判斷URL的地方做成單獨的類,然後再去調用,就像判斷是否登入的那樣?

      我這麼做的目的很簡單,就是為了把相同的功能放到父類裡面去,至于有沒有父子關系,我不想過多的考慮,就像以前大家讨論“book.Save()”是否OO一樣,管他O不O呢,好用就行,不用特意去迎合在現實裡面的意義吧。既然都需要判斷URL參數,那就放在父類裡面好了。

      當然,判斷URL參數的地方沒有做成單獨的類還有一個原因,那就是每一類的頁面的判斷的參數都不一樣,還有一些特殊的頁面判斷的方式也不一樣,我把判斷的函數定義成virtual的,這樣如果子類的判斷方式不一樣的話,那麼就可以通過override來重寫成自己的判斷方式,這個不知道做成單獨的類是否可以達到這樣的功能。比如說表單頁面的父類就override了驗證DataID的函數。

4、 修改。

      看了大家的回複,也确實覺得有一個地方确實不适合,那就是判斷是否有權限通路頁面的功能,于是思考了一下,應該把這個功能從父類裡面移出去,移出去後放在了BaseUserInfo類裡面了。

5、修改後的類圖

【自然架構】 頁面裡的父類—— 改進和想法、解釋

      這是我的想法,歡迎大家拍闆磚,呵呵。

1、PageURL

【自然架構】 頁面裡的父類—— 改進和想法、解釋

namespace Nature.UI.Base

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

{

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

    /**//// <summary>

【自然架構】 頁面裡的父類—— 改進和想法、解釋

    /// 處理URL參數

【自然架構】 頁面裡的父類—— 改進和想法、解釋

    /// 接收URL傳遞過來的子產品ID,大部分頁面都需要使用這個ID

【自然架構】 頁面裡的父類—— 改進和想法、解釋

    /// </summary>

【自然架構】 頁面裡的父類—— 改進和想法、解釋

    public partial class PageURL : PagePermission

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        定義屬性,記錄URL參數值#region 定義屬性,記錄URL參數值

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /**//// <summary>

【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// FunctionID,功能節點ID

【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// </summary>

【自然架構】 頁面裡的父類—— 改進和想法、解釋

        public string FunctionID = string.Empty;

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 接收URL傳遞過來的記錄ID,用于顯示、修改資料

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        public string DataID;

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        ///  按鈕ID,用于是否可用按鈕的驗證

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        public string ButtonID;

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 部門ID。string.Empty 表示沒有傳遞參數

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        public string DepartmentID = string.Empty;

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// foreign key column 外鍵ID。string.Empty 表示沒有傳遞參數

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        public string ForeignID = string.Empty;

【自然架構】 頁面裡的父類—— 改進和想法、解釋

        #endregion

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 頁面裡的标題

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        public Label Lbl_Title;             //頁面裡的标題

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        初始化 在Page_Load之間執行#region 初始化 在Page_Load之間執行

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 提取URL裡面的參數,驗證參數

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// <param name="e"></param>

【自然架構】 頁面裡的父類—— 改進和想法、解釋

        protected override void OnInit(EventArgs e)

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            base.OnInit(e);

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            //調用函數來設定FunctionID,不同類型的頁面就可以用不同的方式來設定FunctionID了。

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            SetFunctionID();

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            //調用函數來設定ButtonID。

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            SetButtonID();

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            //調用函數來設定DataID。

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            SetDataID();

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            //調用函數來設定DepartmentID(部門ID)。

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            SetDepartmentID();

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            //調用函數來設定ForeignID(外鍵ID)。

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            SetForeignID();

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            if (!Page.IsPostBack)

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                //設定标題

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                SetPageTitle();

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            }

【自然架構】 頁面裡的父類—— 改進和想法、解釋

        }

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        清除IE緩存#region 清除IE緩存

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 清除IE緩存

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        protected override void OnLoad(EventArgs e)

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            base.OnLoad(e);

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            //清除IE緩存

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            Response.Cache.SetNoStore();

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

    }

【自然架構】 頁面裡的父類—— 改進和想法、解釋

}

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

    /// 說明

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        設定标題#region 設定标題

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 設定标題

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        private void SetPageTitle()

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            if (this.Lbl_Title != null)

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                string sql = "select FunctionTitle from Manage_Function_Info where FunctionID=" + this.FunctionID;

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                this.Lbl_Title.Text = dal_Customer.ExecuteString(sql);

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        用抽象函數的方式設定FunctionID#region 用抽象函數的方式設定FunctionID

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 設定FunctionID。

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        protected virtual void SetFunctionID()

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            //DataList.aspx、DataForm.aspx 頁面通過URL裡的參數設定。

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            //其他頁面自行設定

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            this.FunctionID = Request.QueryString["fid"];

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            驗證子產品ID參數是否是數字。#region 驗證子產品ID參數是否是數字。

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            if (!Functions.IsInt(this.FunctionID))

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                Response.Write("子產品參數不正确!");

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                Response.End();

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            #endregion

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        用抽象函數的方式設定DataID#region 用抽象函數的方式設定DataID

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 設定DataID。

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        protected virtual void SetDataID()

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            this.DataID = Request.QueryString["id"];

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            if (!Functions.IsInt(DataID))

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                //沒有傳遞,設定預設值

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                DataID = string.Empty;

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        用抽象函數的方式設定ButtonID#region 用抽象函數的方式設定ButtonID

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 設定ButtonID。

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        protected virtual void SetButtonID()

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            this.ButtonID = Request.QueryString["bid"];

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            if (!Functions.IsInt(ButtonID))

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                ButtonID = string.Empty;

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        驗證外鍵#region 驗證外鍵

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 驗證外鍵

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        private void SetForeignID()

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            this.ForeignID = Request.QueryString["frid"];

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            驗證外鍵ID參數是否是數字。#region 驗證外鍵ID參數是否是數字。

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            if (!Functions.IsInt(ForeignID))

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                ForeignID = string.Empty;

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        驗證部門ID#region 驗證部門ID

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 驗證部門ID

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        private void SetDepartmentID()

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            this.DepartmentID = Request.QueryString["did"];

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            驗證部門ID參數是否是數字。#region 驗證部門ID參數是否是數字。

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            if (!Functions.IsInt(DepartmentID))

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                DepartmentID = string.Empty;

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

2、BasePageList

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

    /// 清單頁面的基類

【自然架構】 頁面裡的父類—— 改進和想法、解釋

    /// 這個算不算模闆模式呢?

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

    public partial class BasePageList : PageURL

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        定義共用的控件,以便于統一控制#region 定義共用的控件,以便于統一控制

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 分頁用的控件

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        public QuickPager ctl_CommonPager;

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 顯示資料用的控件

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        public MyGrid ctl_CommonGrid;

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 查詢控件

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        public MyFind ctl_CommonFind;

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 查詢按鈕

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        public Button btn_Search;

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 按鈕組,功能(操作)按鈕

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        public OperationButtonBar ctl_CommonButtonBar;

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        在 OnInit 事件裡面設定各個自定義控件的屬性和關聯#region 在 OnInit 事件裡面設定各個自定義控件的屬性和關聯

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 在 OnInit 事件裡面設定各個自定義控件的屬性和關聯

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            //父類裡面驗證參數是否正确

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            //驗證是否有權限通路。

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            MyUser.CheckFunctionID(this.FunctionID);

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            //設定分頁控件的屬性和事件

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            SetQuickPagerInfo();

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            //設定資料表格的屬性

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            SetGridInfo();

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            //設定查詢控件的屬性

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            SetFindControlInfo();

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            //設定操作按鈕的屬性

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            SetButtonBarInfo();

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

    /// 清單的基類。給共用控件設定屬性和事件。

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        設定分頁控件的屬性#region 設定分頁控件的屬性

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 從中繼資料裡提取資訊,設定分頁控件的屬性

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        public virtual void SetQuickPagerInfo()

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            if (ctl_CommonPager != null)

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                ctl_CommonPager.DAL = dal_Customer;                     //設定客戶的資料通路函數庫

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                ctl_CommonPager.PagerSQL.Page = this;                   //設定Page,用于儲存屬性的狀态

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                if (ctl_CommonGrid != null)

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                    ctl_CommonPager.ShowDataControl = ctl_CommonGrid;   //綁定資料顯示控件

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                ctl_CommonPager.FunctionID = this.FunctionID;           //設定子產品标志,即功能節點的ID

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                ctl_CommonPager.SetPagerInfo(dal_Metadata);             //從配置資訊裡面提取資料

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                //擷取配置資訊裡面的“固定查詢條件”

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                string tableQueryAlways = ctl_CommonPager.PagerSQL.TableQueryAlways;

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                string tmpQuery = "";

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                判斷是否傳入id,如果傳入了再判斷是否有外鍵。顯示從表的清單的時候使用#region 判斷是否傳入id,如果傳入了再判斷是否有外鍵。顯示從表的清單的時候使用

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                if (this.DataID != null)

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                    string ForeignColumn = this.dal_Metadata.ExecuteString("select top 1 ForeignColumn  from Manage_Function_Info where FunctionID=" + this.FunctionID);

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                    if (ForeignColumn != null && ForeignColumn.Length > 0)

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                        //設定固定查詢條件

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                        tmpQuery = ForeignColumn + "=" + this.DataID;

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                        if (tableQueryAlways.Length == 0)

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                            tableQueryAlways = tmpQuery;

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                        else

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                            tableQueryAlways += " and " + tmpQuery;

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                    }

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                }

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                #endregion

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                判斷使用者角色是否有清單的過濾方案#region 判斷使用者角色是否有清單的過濾方案

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                tmpQuery = MyUser.GetResourceListCastSQL(this.FunctionID);

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                if (tmpQuery.Length > 0)

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                    //有過濾方案,即查詢語句。添加到分頁控件的固定查詢條件裡。

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                    if (tableQueryAlways.Length == 0)

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                        tableQueryAlways = tmpQuery;

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                    else

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                        tableQueryAlways += " and " + tmpQuery;

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                //設定分頁控件的固定查詢條件。

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                ctl_CommonPager.PagerSQL.TableQueryAlways = tableQueryAlways;

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        設定顯示資料控件的屬性#region 設定顯示資料控件的屬性

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 設定顯示資料控件的屬性

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        public virtual void SetGridInfo()

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            if (ctl_CommonGrid != null)

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                SetGridInfo(ctl_CommonGrid);

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 設定資料顯示控件執行個體的屬性

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// <param name="grid">資料顯示控件MyGrid</param>

【自然架構】 頁面裡的父類—— 改進和想法、解釋

        public void SetGridInfo(MyGrid grid)

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            UDRMGrid myUDRM = new UDRMGrid();

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            grid.UDRM = myUDRM;

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            myUDRM.DALCustomer = base.dal_Customer;   //設定客戶資料的資料通路函數庫

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            myUDRM.DALMetadata = base.dal_Metadata;   //設定中繼資料的資料通路函數庫

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            myUDRM.FunctionID = this.FunctionID;      //設定子產品标志,即功能節點的ID

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            //設定目前使用者可以通路的字段——即權限到清單字段

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            myUDRM.RoleColumnID = MyUser.GetUserColumnIDs(this.FunctionID, "1");

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        設定查詢控件的屬性#region 設定查詢控件的屬性

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 設定查詢控件的屬性

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        public virtual void SetFindControlInfo()

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            if (ctl_CommonFind != null)

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                SetFindControlInfo(ctl_CommonFind);

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            if (btn_Search != null)

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                this.btn_Search.Click += new EventHandler(Btn_Search_Click);

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// <param name="find">查詢控件的執行個體</param>

【自然架構】 頁面裡的父類—— 改進和想法、解釋

        public void SetFindControlInfo(MyFind find)

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            UDRMFind myUDRM = new UDRMFind();

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            find.UDRM = myUDRM;

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            find.User = MyUser;

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            myUDRM.DALMetadata = base.dal_Customer;                  //設定資料通路函數庫

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            myUDRM.DALCustomer = base.dal_Metadata;                  //設定資料通路函數庫

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            myUDRM.FunctionID = this.FunctionID;    //設定子產品标志,即功能節點的ID

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            find.SetTDColumns = 4;                //設定列數

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            myUDRM.RoleColumnID = MyUser.GetUserColumnIDs(this.FunctionID, "3");

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        查詢按鈕觸發的事件#region 查詢按鈕觸發的事件

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 查詢按鈕觸發的事件

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// <param name="sender"></param>

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        public virtual void Btn_Search_Click(object sender, EventArgs e)

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            ctl_CommonPager.PagerSQL.TableQuery = this.ctl_CommonFind.GetSearchWhere();

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            ctl_CommonPager.PagerSQL.CreateSQL();

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            ctl_CommonPager.BindFirstPage();

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            //Response.Write(this.ctl_CommonFind.GetSearchWhere ());

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        設定按鈕組#region 設定按鈕組

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 設定按鈕組

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        public virtual void SetButtonBarInfo()

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            if (ctl_CommonButtonBar != null)

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                ctl_CommonButtonBar.FunctionID = this.FunctionID;

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                ctl_CommonButtonBar.DAL = this.dal_Customer;

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                if (MyUser.PersonID == "1")

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                    //超級管理者不過濾按鈕

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                    ctl_CommonButtonBar.SetRoleButtonID = "";

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                else

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                    //其他使用者驗證按鈕

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                    ctl_CommonButtonBar.SetRoleButtonID = MyUser.GetUserButtonID(this.FunctionID);

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        //驗證

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        驗證DataID#region 驗證DataID

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 驗證DataID。

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        protected override void SetDataID()

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            base.SetDataID();

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            string dataID = this.DataID;

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            if (dataID == string.Empty)

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            else

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                //傳遞了參數,需要驗證

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                if (!Functions.IsInt(dataID))

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                    Response.Write("DataID參數不正确!");

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                    Response.End();

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        驗證清單頁面與FunctionID是否比對#region 驗證清單頁面與FunctionID是否比對

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 驗證清單頁面與FunctionID是否比對

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        protected override void SetFunctionID()

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            //基類裡驗證FunctionID是否是數字

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            base.SetFunctionID();

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            驗證清單頁面與FunctionID是否比對#region 驗證清單頁面與FunctionID是否比對

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            string webPath = Request.Url.LocalPath;

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            switch (webPath)

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                case "/_CommonPage/DataList1.aspx":     //通用清單頁面

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                case "/_CommonPage/DataTab.aspx":       //通用标簽頁面

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                    //不需要做比對驗證

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                    break;

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                default:

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                    //需要驗證

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                    string sql = "select top 1 1 from Manage_Function where FunctionID = " + this.FunctionID + "and WebURL like '" + webPath + "%'";

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                    if (this.dal_Customer.ExecuteExists(sql))

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                        //有記錄,通過驗證

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

                        //沒有記錄,不能繼續

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                        Response.Write("FunctionID和頁面不比對!");

【自然架構】 頁面裡的父類—— 改進和想法、解釋

                        Response.End();

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

3、具體的清單頁面

【自然架構】 頁面裡的父類—— 改進和想法、解釋

namespace Nature.UI.Common

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

    /// 資料清單

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

    public partial class DataList1 : Base.BasePageList  

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 是否顯示查詢條件

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        protected string isShowSearch = "";        //是否顯示查詢

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        protected void Page_Load(object sender, EventArgs e)

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            base.ForeignID = this.DataID;

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        重新整理目前頁面#region 重新整理目前頁面

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 重新整理目前頁面

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        protected void Btn_Reload_Click(object sender, System.EventArgs e)

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            this.ctl_CommonPager.BindThisPage();

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 顯示第一頁

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        protected void Btn_ReloadFirst_Click(object sender, System.EventArgs e)

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            //this.ctl_CommonPager.CreateQuery();

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            this.ctl_CommonPager.BindFirstPage();

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        查詢#region 查詢

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 查詢事件

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        public override void Btn_Search_Click(object sender, EventArgs e)

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            base.Btn_Search_Click(sender, e);

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            isShowSearch = "isShowSearch = 0;";

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        導出到Excel#region 導出到Excel

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        /// 導出Excel的按鈕事件

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

        protected void Btn_ToExcel_Click(object sender, System.EventArgs e)

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            //導出到Excel

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            Session["toExcelSQL"] = ctl_CommonPager.PagerSQL.TableQuery ;

【自然架構】 頁面裡的父類—— 改進和想法、解釋

            //Session["ViewCaseID"] = this.Lst_Case_List.SelectedValue;

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

            Response.Redirect("/_CommonPage/toExcel.aspx?id=-2&k=9&fid=" + FunctionID);

【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋
【自然架構】 頁面裡的父類—— 改進和想法、解釋

<head runat="server">

    <title><%=Lbl_Title.Text%></title>

    <%=CssWeb%> 

    <script language="javascript" type="text/javascript" src="/public/js/TableTR.js" ></script>

    <script language="javascript" type="text/javascript" src="/public/js/My97DatePicker/WdatePicker.js" ></script>

</head>

<body>

    <form id="form1" runat="server">

    <div style="width:100%; font-size:14pt; text-align: center;vertical-align:middle;">

        <br /><asp:Label ID="Lbl_Title" runat="server" style="font-size:14pt; "></asp:Label>

    </div>

    <Nature:OperationButtonBar ID="ctl_CommonButtonBar" runat="server" />

    <div id="div_Search" style="display:none;" align="center"><br />

    <fieldset title="查詢條件" style="PADDING-BOTTOM:6px;BORDER-RIGHT: #666 1px solid; BORDER-TOP: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BORDER-BOTTOM: #666 1px solid;"><legend style="font-size:9pt;">查詢條件</legend>

        <table  width="100%" align="center" border="0" bgcolor="#ffffff">

            <tr>

                <td><Nature:MyFind id="ctl_CommonFind" runat="server"/></td>

                <td width="50">

                    <asp:Button ID="Btn_Search" runat="server" Text=" 查 詢 " />

                </td>

            </tr>

        </table>

    </fieldset>

    <div>

        <Nature:MyGrid ID="ctl_CommonGrid" runat="server" />

        <Nature:QuickPager ID="ctl_CommonPager" runat="server" PageUIGO="GO" />

    <span id="dd"></span>

    <span style="DISPLAY:none">

         <asp:button id="Btn_ToExcel" runat="server" Text="導出到Excel" onclick="Btn_ToExcel_Click"></asp:button>

        <asp:button id="Btn_ToAccess" runat="server" Text="導出到Access"></asp:button>

        <asp:button id="Btn_Reload" runat="server" Text="重新整理本頁" onclick="Btn_Reload_Click"></asp:button>

        <asp:button id="Btn_ReloadFirst" runat="server" Text="重新整理到第一頁" onclick="Btn_ReloadFirst_Click"></asp:button>

        <Nature:MyTextBox id="Txt_isShowSearch" runat="server"/>

        <iframe id="ifrmDel" name="ifrmDel" width="100" height="100"></iframe>

    </span>

    </form>

</body>

==========================

= 希望我的想法,能夠給您帶來一點幫助! =

= 大家一起研究、讨論,共同提高、發财! =

繼續閱讀