クラスの継承関係で簡易バックグラウンドコードテンプレートを実現

12622 ワード

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     }

以上は一つの考え方を提供しただけで、もし間違いがあれば、各ネットユーザーの批判と指摘を望んでいる.
 
 
 
作者:D.J. Chan 出处:http://www.cnblogs.com/djchan/いかなる形式の転載を歓迎しますが、必ず出典を明記してください.