2012-05-18 39 views
0

單擊我使用一個asp.net中繼器在我的asp.net頁面這樣的:上LinkBut​​ton的改變標籤內轉發

<asp:Repeater ID="Repeater1" runat="server"> 
       <ItemTemplate> 
         <asp:Label ID="lblsSICCode" runat="server" Text='<%# Eval("sSICCode") %>'></asp:Label> 
       <asp:LinkButton ID="lnkSelect" runat="server" CommandArgument='<%# Eval("sSICCode") %>' OnCommand="LinkButton1_Command" CommandName="MyUpdate">Select</asp:LinkButton> 
       <asp:Label ID="Label1" runat="server" Text='<%# Eval("sSICCode") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:Repeater> 

我想改變,只要點擊一個LinkBut​​ton標籤文本。我正在使用以下代碼,但它會更改所有中繼器的標籤。所選行前的Label1應該獲得mylabel的值。

Protected Sub LinkButton1_Command(sender As Object, e As CommandEventArgs) 
    If e.CommandName = "MyUpdate" Then 
     For Each RI As RepeaterItem In Repeater1.Items 
      Dim MyLabel As Label = TryCast(RI.FindControl("lblsSICCode"), Label) 

      If MyLabel IsNot Nothing Then 

       If MyLabel.Text = e.CommandArgument Then 
        Response.Write(e.CommandArgument + "<br />") 
       End If 

      End If 
     Next 

    End If 
End Sub 
+0

你並沒有真正將循環限制在你關心的特定項目上;它正在執行所有內容。你需要檢查你想要的特定項目是否是正確的索引/包含正確的元素等等。 – Tejs

回答

0

將LinkBut​​ton1中的命令參數與中繼器項目的索引放在一起。接下來找到Label控件,就像在右邊的中繼器項目中一樣。

編輯:嘗試是這樣的:如果你離開的CommandName在LinkBut​​ton的中繼器內

Private Sub Repeater1_ItemCommand(source As Object, e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles Repeater1.ItemCommand 
    If e.CommandName.Equals("MyUpdate") Then 
     Dim MyLabel As Label = TryCast(e.Item.FindControl("lblsSICCode"), Label) 
     Dim Label1 As Label = TryCast(e.Item.FindControl("Label1"), Label) 

     If MyLabel IsNot Nothing Then 
      Label1.Text = MyLabel.Text 
     End If 
    End If 
End Sub 

上述事件處理程序將觸發。

+0

請看看更新後的問題。我希望label1在選擇點擊時使用mylaebl值填充 – DotnetSparrow

+0

查看更新後的帖子。不要爲鏈接按鈕創建事件處理程序,請爲中繼器創建一個事件處理程序。如果你點擊鏈接按鈕,ItemCommand會觸發。確保CommandName =「MyUpdate」保留在Linkbutton標籤內。此代碼也更具性能,因爲您不需要遍歷所有中繼器項目。 – sockfd

+0

對不起,現在看到更新的代碼... – sockfd

相關問題