当前位置:编程学习 > asp >>

ASP.NET动态增加控件 继承篇

 

随着後面要讲得东西越来越深,這邊文章內容以及程式易做图,也變得越來越多,因為這不是我原來的目的,

所以我還是會盡量用淺顯易懂的方式來讓大家瞭解。

 

继承的好处,这里不多说,主要是 示范,如何在ASP.NET 来继承。

 

一般常見的繼承是用來改寫ASP.NET 既有的控件,而我最常用不是這方面,而是用來規範網頁標準開發流程,另一方面是用來減少我的程式易做图,上述兩方面最終目的,

其實都是為了未來減少系統維護的困難度。

 

規範標準流程,在多人共同開發上,尤顯其重要性,否則有維護過他人程式的人,都知道每各開發者,都有其風格,你光要瞭解每個人的風格就要花很多時間了,最麻煩的還是,每個人 開發風格,還會隨著他的成長 來變化,這等於你每接收一隻程式,不管是不是同一人,都要重新 瞭解一次開發風格,其中所需成本可想而知。

 

在這邊程式中有使用deal_Button_Click 這個函式,這就是一種開發流程的規範,因為我們基底程式已經寫好必要流程,後面要繼承的人,就只能照我們的基底流程來開發,如此一來,如此我們就可以 藉由這種方式,來強迫後面使用的人,一定要用這個方式來開發。

 

而減少程式易做图這個道理 也是顯而易見的,這個開發模式,就我本身長久經驗來看,在使用時,並不用想的太困難,尤其是想要一開始 就要想的很清楚,這都是很困難,反而造成使用這種開發模式的阻礙,我個人建議讀者在使用時,最簡單的方式,其實就是一直不斷的整裡手中的程式易做图,把共通的部份集合起來,先能達成減少程式易做图的目的就可以了,能減少程式易做图,就能吸引其他開發人員一起使用,大家在一起不斷去討論、精進就可以了。

 

上述的方式,當然只是用一個簡要的方式,讓讀者容易瞭解,在一般大案子中,還是需要資深人員,先規劃架構以及定義相關計畫,來進行開發的,這些都有很多很深奧的理論,在討論了,也不需要我在這來畫蛇添足。

 

JS_Demo2Base.aspx.cs

 1 using System;

 2 using System.Data;

 3 using System.Collections;

 4 using System.Web.UI;

 5 using System.Web.UI.WebControls;

 6 using System.Web.UI.HtmlControls;

 7 using System.Text;

 8

 9 public class JSDemoBase : System.Web.UI.Page{

10

11     protected HtmlGenericControl sourceTag;

12     protected Button _myBtn;

13     protected TextBox _myTB;

14

15     protected override void OnInit(EventArgs e)

16     {

17         base.OnInit(e);

18

19         Label message = new Label();

20         message.ID = "请输入你要说的话";

21         sourceTag.Controls.Add(message);

22

23         _myTB = new TextBox();

24         _myTB.ID = "input";

25         //input.Text = val;

26         sourceTag.Controls.Add(_myTB);

27

28         _myBtn = new Button();

29         _myBtn.ID = "btnSayHello";

30         _myBtn.Text = "SayHello";

31         sourceTag.Controls.Add(_myBtn);

32

33         string val = Request.QueryString.Get("val");

34         deal_Button_Click(val);

35     }

36

37     public virtual void deal_Button_Click(string value)

38     {

39     }

40

41     public Button btnSayHello

42     {

43         get

44         {

45             return _myBtn;

46         }

47     }

48     public TextBox input

49     {

50         get

51         {

52             return _myTB;

53         }

54     }

55 }

 

 

在写基底程式时,如有引用asp.net 上的server 端控件,请记得要在程式一开始就要先定义(ID、Type 都要一致),如上述程式中的sourceTag。这样一来就可以程式中来直接使用该控件,就像我们原来asp.net 程式一般。

www.zzzyk.com

JS_Demo2.aspx

 1 <%@ Page Language="C#" src="./JS_Demo2Base.aspx.cs" Inherits="JSDemoBase" %>

 2

 3    <script language="C#" runat="server">

 4       

 5       

 6     public override void deal_Button_Click(string value)

 7     {

 8         input.Text = value;

 9         if (value != "" && value != null)

10             btnSayHello.Attributes.Add("OnClick", "return SetValue(" + input.ClientID + ");");

11         else

12             btnSayHello.Attributes.Add("OnClick", "return GetOtherValue(" + input.ClientID + ");");

13     }

14

15    </script>

16 <html>

17 <head>

18     <meta http-equiv="content-type" content="text/html; charset=utf-8" />

19 </head>

20 <body>

21  <script type = "text/javascript">

22      var myInput;

23      function GetOtherValue(ctrl) {

24          myInput = ctrl;

25          var hWnd = window.open("JS_Demo.aspx?val=" + ctrl.value, "_blank" );

26          if ((document.window != null) && (!hWnd.opener))

27              hWnd.opener = document.window;

28          return false;

29      }

30      function SetValue(ctrl) {

31          window.opener.myInput.value = "Re: " + ctrl.value;

32          return false;

33      }

34 </script>

35    <form runat="server">

36

37       <h3>动态增加控件 继承篇</h3>

38       

补充:Web开发 , ASP.Net ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,