2011-07-28 26 views
2

我有一箇中繼器,它的一列中有一個LinkBut​​ton,並且我已經連接了onclick事件。當用戶點擊其中一個選項時,我需要知道他們點擊了哪個LinkBut​​ton。最佳做法是什麼?Webforms轉發器鏈接問題

回答

3

您應該使用OnCommand事件而不是OnClick使用一些CommandNameCommandArgument來區分黑白項目。 This MSDN page有一個例子。

3

通常CommandArgument='<%#Eval("Id")用於這種目的

<asp:LinkButton ID="LinkButton1" runat="server" 
CommandArgument='<%#Eval("Id") %>' CommandName="commandName"></asp:LinkButton> 

,然後它會像...

protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e) 
{ 
    if(e.CommandName == "commandName") 
    { 
     Int32 id = Convert.ToInt32(e.CommandArgument); 
    } 
} 
0

檢查與此代碼

<%@ Page Language="C#" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<script runat="server"> 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 
      repTriggers.DataSource = new int[3] { 0, 1, 2 }; 
      repTriggers.DataBind(); 
     } 
    } 

    protected void repTriggers_ItemCommand(object sender, RepeaterCommandEventArgs e) 
    { 
     if (e.CommandName == "trigger") 
     { 
      LinkButton btn = e.CommandSource as LinkButton; 

      if (btn != null) 
      { 
       lblUpdate.Text = "Update triggered by " + btn.ID + e.Item.ItemIndex.ToString(); 
      } 

      // [Steve] removed UpdatePanel2.Update() 
     } 
    } 
</script> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head id="Head1" runat="server"> 
    <title>Untitled Page</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <asp:ScriptManager ID="TheScriptManager" runat="server"></asp:ScriptManager> 

    <%-- [Steve] removed UpdatePanel1 --%>  
    <asp:Repeater ID="repTriggers" runat="server" OnItemCommand="repTriggers_ItemCommand"> 
     <ItemTemplate> 
      <asp:LinkButton ID="lnkTrigger" runat="server" Text="Trigger" CommandName="trigger"></asp:LinkButton> 
     </ItemTemplate> 
    </asp:Repeater> 

    <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="conditional"> 
     <%-- [Steve] added repTriggers as an AsyncPostBackTrigger --%> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="repTriggers" /> 
     </Triggers> 
     <ContentTemplate> 
      <asp:Label ID="lblUpdate" runat="server"></asp:Label> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
    </form> 
</body> 
</html> 

來源網址http://forums.asp.net/p/1062060/1528071.aspx