Linkbutton控制項在項目中的簡單應用
我們知道,在web控制項中有一組用於表單提交和回傳的控制項,即Button控制項。這類控制項用於將帶有使用者輸入值的頁面提交給伺服器,以便用頁面中的代碼對這些值進行處理。它會在伺服器上產生一個Click事件,供使用者在代碼中使用。
Button控制項可分為button控制項、LinkButton控制項、ImageButton控制項三類。它們都用於提交頁面。其中ImageButton控制項可以顯示為一幅映像,並且能夠提供使用者單擊位置的座標位置。而LinkButton控制項則在頁面上顯示為一個超級連結。
在網上鞋店系統中,我們簡單應用了在一個頁面內使用多個LinkButton控制項執行同一個命令的方法。接下來我們比較詳細的介紹一下。
問題一:使用LinkButton是用於連結到各個品牌細節的頁面。那麼為什麼不選用導航HyperLink,而以LinkButton取而代之?
事實上,HyperLink控制項僅僅是產生一個有URL指向的超級連結,而LinkButton控制項屬於Button類控制項。它本身支援事件處理,並沒有NavigateUrl屬性,它的URL連結功能亦主要是由事件處理完成——LinkButton控制項支援OnClick、OnCommand等伺服器端方法。可歸納如下:
LinkButton的外觀和風格與hyperlink相同,但它還有另外二點好處,即:
◆ 點擊時能夠返回同一個網頁。
◆ 便於使用的OnClick方法。
問題二:已經確定使用LinkButton。那麼如何在一個頁面裡對多個LinkButton控制項定義方法?要為每一個控制項都寫同樣的方法嗎?這顯然是不切實際的。那如果唯寫一個方法,又如何判斷是哪個控制項觸發,伺服器向誰提供服務?
在這裡我們應用LinkButton的屬性CommandName和方法Command來實現。
首先我們先瞭解一下LinkButton的幾個比較重要的屬性和方法。
◆ CommandName屬性:取得或設定與LinkButton控制項相關的命令名稱。這個值與CommandArgument屬性一起傳給Command處理事件。
◆ CommandArgument屬性:包含有關命令的補充資訊,如Ascending排序次序。和CommandName一起使用。
◆ Click事件:這一事件一般在沒有命令名與LinkButton控制關聯時(如“提交”按鈕)使用。
◆ Command事件:當單擊LinkButton 控制項時會引發 Command事件。當命令名(如 Sort)與 LinkButton控制項關聯時,通常使用該事件。這使您可以在一個網頁上建立多個 LinkButton控制項,並以編程方式確定單擊了哪個 LinkButton 控制項。
瞭解LinkButton的屬性和方法後。我們可以在程式中給LinkButton的CommandName屬性和CommandArgument屬性賦值,然後通過Command事件中,即可從CommandEventArgs類中得到資料,進而判斷是哪個LinkButton被觸發了。其中,CommandEventArgs類儲存了和按鈕(Button)事件相關的資料,並且可以在事件處理中通過CommandEventArgs類的屬性來訪問這些資料。
代碼: 複製代碼 代碼如下:private void BrandLink_Click(object sender, System.Web.UI.WebControls.CommandEventArgs e)
{
string cmd = e.CommandName;
switch(cmd)
{
case "BrandLink1":
this.Session["fileName"]=BrandLink1.Text;
Server.Transfer("BrandPic.aspx");
break;
case "BrandLink2":
this.Session["fileName"]=BrandLink2.Text;
Server.Transfer ("BrandPic.aspx");
break;
case "BrandLink3":
this.Session["fileName"]=BrandLink3.Text;
Server.Transfer("BrandPic.aspx");
break;
case "BrandLink4":
this.Session["fileName"]=BrandLink4.Text;
Server.Transfer("BrandPic.aspx");
break; case "BrandLink5":
this.Session["fileName"]=BrandLink5.Text;
Server.Transfer("BrandPic.aspx");
break;
case "BrandLink6":
this.Session["fileName"]=BrandLink6.Text;
Server.Transfer("BrandPic.aspx");
break;
case "BrandLink7":
this.Session["fileName"]=BrandLink7.Text;
Server.Transfer("BrandPic.aspx");
break;
default:
this.Session["fileName"]=BrandLink0.Text;
Server.Transfer("Shop.aspx");
break;
}
}