本章節講述的各個類是后端系統的核心之一,涉及到系統安全驗證、操作日志記錄、頁面與按鍵權限控制、后端頁面功能封裝等內容,希望學習本系列的朋友認真查看新增的類與函數,這對以后使用本框架進行開發時非常重要。
1、父類(基類)的實現
在開發后端首頁與相關功能頁面前,我們首先要實現的是所有頁面的基類(父類),將常用的功能都預先實現出來,而后面的相關UI類則直接繼承它,這樣就能簡單的自動實現了相關頁面功能,不用再每個頁面去編寫某些按鍵功能或其他一些功能,如果有特殊的需要,再重寫對應的功能類就可以了,對于常用功能,由于之前的邏輯層與數據層已使用模板生成好了,所以直接調用,這樣的話比如實現一個列表頁面的一些功能(如下圖),只需要簡單的在頁面控件使用指定名稱,那么一些實現代碼就不用再編寫了,這些控件自動擁有對應的功能,比如刷新、自動排序、保存排序(直接修改下圖中排序列的輸入框后點擊保存排序就可以了,這個功能不用編寫任何一個代碼,只需要將按鍵放到下圖位置,然后使用指定名稱就可以了)等功能。這樣操作將使我們后面的開發工作更加輕松。而對于列表的話,也只需要調用邏輯層函數直接綁定(bll.BindGrid(this, Grid1, Grid1.PageIndex + 1, Grid1.PageSize, InquiryCondition(), _order);)就可以實現列表、分頁、翻頁、排序等功能。當然列表點擊審核的√與×就會同步更改數據庫對應記錄的字段與圖標,也只需要在列表控件對應函數復制進簡單的幾行代碼就可以實現,這些會在后面相應章節中具體講述。
先上父類與接口代碼
1 using System; 2 using System.Collections.Generic; 3 using System.Web.UI; 4 using DotNet.Utilities; 5 using FineUI; 6 using Solution.Logic.Managers; 7 using Solution.Logic.Managers.application; 8 9 namespace Solution.Web.Managers.WebManage.Application 10 { 11 /// <summary> 12 /// Web層頁面父類 13 /// 本基類封裝了各種常用函數,c減少重復代碼的編寫 14 /// </summary> 15 public abstract class PageBase : System.Web.UI.Page, ipageBase 16 { 17 #region 定義對象 18 //邏輯層接口對象 19 PRotected ILogicBase bll = null; 20 //定義列表對象 21 private FineUI.Grid grid = null; 22 //頁面排序容器 23 List<string> sortList = null; 24 #endregion 25 26 #region 初始化函數 27 protected override void OnInit(EventArgs e) 28 { 29 base.OnInit(e); 30 31 //檢測用戶是否超時退出 32 OnlineUsersBll.GetInstence().IsTimeOut(); 33 34 if (!IsPostBack) 35 { 36 //檢測當前頁面是否有訪問權限 37 MenuInfoBll.GetInstence().CheckPagePower(this); 38 39 #region 設置頁面按鍵權限 40 //定義按鍵控件 41 Control btnControl = null; 42 try 43 { 44 //找到頁面放置按鍵控件的位置 45 ControlCollection controls = MenuInfoBll.GetInstence().GetToolBarControls(this.Controls); 46 //逐個讀取出來 47 for (int i = 0; i < controls.Count; i++) 48 { 49 //取出控件 50 btnControl = controls[i]; 51 //判斷是否除了刷新、查詢和關閉以外的按鍵 52 if (btnControl.ID != "ButtonRefresh" && btnControl.ID != "ButtonSearch" && btnControl.ID != "ButtonClose" && btnControl.ID != "btnReset") 53 { 54 //是的話檢查該按鍵當前用戶是否有控件權限,沒有的話則禁用該按鍵 55 ((FineUI.Button)btnControl).Enabled = MenuInfoBll.GetInstence().CheckControlPower(this, btnControl.ID); 56 } 57 } 58 } 59 catch (Exception) { } 60 #endregion 61 62 //記錄用戶當前所在的頁面位置 63 CommonBll.UserRecord(this); 64 } 65 66 //運行UI頁面初始化函數,子類繼承后需要重寫本函數,以提供給本初始化函數調用 67 Init(); 68 } 69 #endregion 70 71 #region 接口函數,用于UI頁面初始化,給邏輯層對象、列表等對象賦值 72 73 /// <summary> 74 /// 接口函數,用于UI頁面初始化,給邏輯層對象、列表等對象賦值 75 /// </summary> 76 public abstract void Init(); 77 78 #endregion 79 80 #region 頁面各種按鍵事件 81 82 /// <summary> 83 /// 刷新按鈕事件 84 /// </summary> 85 /// <param name="sender"></param> 86 /// <param name="e"></param> 87 protected void ButtonRefresh_Click(object sender, EventArgs e) 88 { 89 FineUI.PageContext.RegisterStartupScript("window.location.reload()"); 90 } 91 92 /// <summary> 93 /// 關閉 94 /// </summary> 95 /// <param name="sender"></param> 96 /// <param name="e"></param> 97 protected void ButtonClose_Click(object sender, EventArgs e) 98 { 99 PageContext.RegisterStartupScript(ActiveWindow.GetHideRefreshReference());100 101 }102 /// <summary>103 /// 查詢104 /// </summary>105 /// <param name="sender"></param>106 /// <param name="e"></param>107 protected void ButtonSearch_Click(object sender, EventArgs e)108 {109 LoadData();110 }111 112 /// <summary>113 /// 新增114 /// </summary>115 /// <param name="sender"></param>116 /// <param name="e"></param>117 protected void ButtonAdd_Click(object sender, EventArgs e)118 {119 Add();120 }121 122 /// <summary>123 /// 編輯124 /// </summary>125 /// <param name="sender"></param>126 /// <param name="e"></param>127 protected void ButtonEdit_Click(object sender, EventArgs e)128 {129 Edit();130 }131 132 /// <summary>133 /// 刪除134 /// </summary>135 /// <param name="sender"></param>136 /// <param name="e"></param>137 protected void ButtonDelete_Click(object sender, EventArgs e)138 {139 //執行刪除操作,返回刪除結果140 string result = Delete();141 142 if (string.IsNullOrEmpty(result))143 return;144 //彈出提示框145 FineUI.Alert.ShowInParent(result, FineUI.MessageBoxIcon.Information);146 147 //重新加載頁面表格148 LoadData();149 }150 151 152 /// <summary>153 /// 保存數據154 /// </summary>155 /// <param name="sender"></param>156 /// <param name="e"></param>157 protected void ButtonSave_Click(object sender, EventArgs e)158 {159 //執行保存操作,返回保存結果160 string result = Save();161 162 if (string.IsNullOrEmpty(result))163 {164 PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());165 FineUI.Alert.ShowInParent("保存成功", FineUI.MessageBoxIcon.Information);166 }167 else168 {169 //by july,部分頁面保存后,必須刷新原頁面的,把返回的值用 "{url}" + 跳轉地址的方式傳過來170 if (StringHelper.Left(result, 5) == "{url}")171 {172 string url = result.Trim().Substring(6);173 FineUI.Alert.ShowInParent("保存成功", "", FineUI.MessageBoxIcon.Information, "self.location='" + url + "'");174 }175 else176 {177 FineUI.Alert.ShowInParent(result, FineUI.MessageBoxIcon.Information);178 }179 }180 }181 182 /// <summary>保存排序</summary>183 /// <param name="sender"></param>184 /// <param name="e"></param>185 protected void ButtonSaveSort_Click(object sender, EventArgs e)186 {187 SaveSort();188 }189 190 /// <summary>自動排序</summary>191 /// <param name="sender"></param>192 /// <param name="e"></param>193 protected void ButtonSaveAutoSort_Click(object sender, EventArgs e)194 {195 //默認使用多級分類196 SaveAutoSort();197 }198 199 /// &
新聞熱點
疑難解答