Asp.net的優勢就在於快速構建應用,而對於一些最基礎數據的增刪改以及分頁事件或者樣式的設定可以通過在父類中寫上虛方法來供子類調用,如果子類需要在模板的基礎上衍生變化或者索性不要父類的方法的話,則只需要重寫父類的方法即可。 實驗代碼如下: 首先是模板類的抽象,繼承自Page類; 1 public ...
Asp.net的優勢就在於快速構建應用,而對於一些最基礎數據的增刪改以及分頁事件或者樣式的設定可以通過在父類中寫上虛方法來供子類調用,如果子類需要在模板的基礎上衍生變化或者索性不要父類的方法的話,則只需要重寫父類的方法即可。
實驗代碼如下:
首先是模板類的抽象,繼承自Page類;
1 public class Template : System.Web.UI.Page 2 { 3 4 protected override void OnLoad(EventArgs e) 5 { 6 base.OnLoad(e); 7 8 if (!IsPostBack) 9 { 10 DataRefresh(); 11 } 12 } 13 14 protected virtual void DataRefresh() 15 { 16 } 17 18 protected virtual void grid_Init(object sender, EventArgs e) 19 { 20 var grid = sender as GridView; 21 grid.AllowPaging = true; 22 grid.PageSize = 10; 23 grid.PagerSettings.Mode = PagerButtons.NumericFirstLast; 24 } 25 26 protected virtual void grid_PageIndexChanging(object sender, GridViewPageEventArgs e) 27 { 28 var grid = sender as GridView; 29 grid.PageIndex = e.NewPageIndex; 30 DataRefresh(); 31 } 32 }
然後是一個繼承此模板類的具體實例;
1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Child.aspx.cs" Inherits="WebTest.Child" %> 2 3 <!DOCTYPE html> 4 5 <html xmlns="http://www.w3.org/1999/xhtml"> 6 <head runat="server"> 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 8 <title></title> 9 </head> 10 <body> 11 <form id="form1" runat="server"> 12 <div> 13 <asp:GridView ID="grid" runat="server" OnInit="grid_Init" OnPageIndexChanging="grid_PageIndexChanging"></asp:GridView> 14 </div> 15 </form> 16 </body> 17 </html>
最後就是關鍵的後臺代碼實現,此處假設需要修改grid的每頁顯示數和分頁樣式;
1 public partial class Child : Template 2 { 3 4 protected override void DataRefresh() 5 { 6 grid.DataSource = new LogDao().GetLogsByYearMonth("2012", "10"); 7 grid.DataBind(); 8 } 9 10 protected override void grid_Init(object sender, EventArgs e) 11 { 12 base.grid_Init(sender, e); 13 14 grid.PagerSettings.Mode = PagerButtons.NextPreviousFirstLast; 15 grid.PageSize = 15; 16 } 17 18 }
以上僅是提供一種思路,如有錯誤望各網友批評指正。