2015-10-28 36 views
0

同級控制我有一個Repeater結構是這樣的:查找直放站

<asp:Repeater ID="rptListClaimTypes" runat="server"> 
    <ItemTemplate> 
     <asp:FileUpload ID="fuContract" runat="server" /> 
     <asp:LinkButton ID="btnUpload" runat="server" Text="Upload" OnClick="btnUpload_Click" CommandName='<%# Eval("ClaimTypeID")%>' /> 
    </ItemTemplate> 
</asp:Repeater> 

我需要的是點擊btnUpload時處理文件上傳。我可以通過sender訪問觸發子程序的控件。我將如何訪問fuContract

Protected Sub btnUpload_Click(sender As Object, e As EventArgs) 

    Dim ClaimTypeID As Integer = sender.CommandName 
    Dim fuContract As FileUpload = '?? 

End Sub 

回答

1

使用當前事件的方法處理,你會投發件人爲一個LinkBut​​ton,鑄母爲的RepeaterItem,然後使用的FindControl找到FileUpload控件:

Dim fuContract As FileUpload = CType(CType(sender, LinkButton).Parent.FindControl("fuContract"), FileUpload) 

我更喜歡處理這些類型的事件使用中繼器的ItemCommand事件雖然:

Private Sub rptListClaimTypes_ItemCommand(source As Object, e As RepeaterCommandEventArgs) Handles rptListClaimTypes.ItemCommand 

    Dim fuContract As FileUpload = CType(e.Item.FindControl("fuContract"), FileUpload) 

End Sub 
+0

這很好。我只是用一個稍微長一點的方式工作'Dim btnUpload As LinkBut​​ton = DirectCast(sender,LinkBut​​ton)'Dim rpItem As RepeaterItem = TryCast(btnUpload.NamingContainer,RepeaterItem)''Dim fuContract As FileUpload = rpItem.FindControl 「fucontract」),但是你的單行版本要好得多。非常感謝。 – Turnip