一.多個控制項同用一個事件,從而可讓代碼更清晰,更簡單,可維護性強
如下:多個Button共用一個事件處理的2種方法
1.利用OnCommand事件<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="測試1" CommandName="1" OnCommand="Button_Click" />
<asp:Button ID="Button2" runat="server" Text="測試2" CommandName="2" OnCommand="Button_Click" />
<asp:Button ID="Button3" runat="server" Text="測試3" CommandName="3" OnCommand="Button_Click" />
</div>
</form>
</body>
protected void Button_Click(object sender, CommandEventArgs e)
{
switch (e.CommandName)
{
case "1":
Response.Write("你點擊了第一個Button");
break;
case "2":
Response.Write("你點擊了第二個Button");
break;
case "3":
Response.Write("你點擊了第三個Button");
break;
}
}
2.利用OnClick事件<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="bt1" runat="server" Text="測試1" CommandName="1" OnClick="Button_Click" />
<asp:Button ID="bt2" runat="server" Text="測試2" CommandName="2" OnClick="Button_Click" />
<asp:Button ID="bt3" runat="server" Text="測試3" CommandName="3" OnClick="Button_Click" />
</div>
</form>
</body>
protected void Button_Click(object sender, EventArgs e)
{
Button bt = sender as Button;
switch (bt.ID)
{
case "bt1":
Response.Write("你點擊了第一個Button");
break;
case "bt2":
Response.Write("你點擊了第二個Button");
break;
case "bt3":
Response.Write("你點擊了第三個Button");
break;
}
}
二. 頁面載入後設定預設焦點到控制項上
<form id="frm" DefaultFocus="txtUserName" runat="server">
</form>
三. 使用者點擊"Enter"鍵時觸發預設按鈕的Click事件
<form id="frm" DefaultButton="btnSubmit" runat="server">
</form>
四. 簡單的尋找固定的控制項
在頁面的控制項中按層次尋找控制項很痛苦,但是如果你知道控制項怎樣固定在頁面中,就可以用簡寫”$”來尋找控制項而不用寫遞迴的代碼。請看下面代碼,注意”$”的使用:<form id="form1" runat="server" DefaultFocus="formVw$txtName">
<div>
<asp:FormView ID="formVw" runat="server">
<ItemTemplate>
Name:
<asp:TextBox ID="txtName" runat="server"
Text='<%# Eval("FirstName") + " " + Eval("LastName") %>' />
</ItemTemplate>
</asp:FormView>
</div>
</form>
這個小技巧也可以用在伺服器端的 使用FindControl()函數時:
TextBox tb = this.FindControl("form1$formVw$txtName") as TextBox;
if (tb != null)
{
//Access TextBox control
}
五. 強型別訪問跨頁提交的控制項
ASP.NET 2.0引入了交叉回傳的概念使得一個頁面可以將資訊回傳到另一個不同的頁面,可以將button控制項的PostBackUrl屬性設定為接受回傳資料的頁面來完成。一般的,回傳的資料可以象前一頁那樣做一些事情。但是,如果你要獲得前一頁制定控制項的屬性就需要一個cast(),如果你給引起回傳的code-behide頁面添加了一個公用屬性,你就可以直接以強型別的方式添加PreviousPageType來指向引起回傳的頁面從而能夠訪問那個屬性。
果有一個頁面Default.aspx,他有一個公用屬性來返回此頁面上一個TextBox,資料回傳目的頁(SearchResults.aspx)可以以強型別的方式(不需要FindControl() 方法),在頁面的頂部添加:
<%@ PreviousPageType VirtualPath="Default.aspx" %>
這樣,SearchResults.aspx中代碼就可以以強型別的方式訪問Default.aspx的TextBox。下面的例子假定Default.aspx定義的屬性名稱為SearchTextBox:
TextBox tb = PreviousPage.SearchTextBox;
六. 強型別訪問主版頁面的控制項
PreviousPageType指令並不是唯一的可以強型別訪問控制項的方法。如果在主版頁面中定義了一個公用屬性,並且想要以強型別的方式訪問它,那麼就可以在頁面頂部添加MasterType指令(注意:MasterType指令同PreviousPageType一樣允許定義一個TypeName)
<%@ MasterType VirtualPath="MasterPage.master" %>
你可以在內容頁書寫如下的代碼來訪問目標主版頁面的屬性:
this.Master.HeaderText = "Label updated using MasterType directive with VirtualPath attribute.";