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;
}
}