【问题标题】:Find sibling control in Repeater在Repeater中查找兄弟控件
【发布时间】:2015-10-28 14:02:46
【问题描述】:

我有一个 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

【问题讨论】:

    标签: .net vb.net repeater findcontrol


    【解决方案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
    

    【讨论】:

    • 太好了。我只是用一种有点冗长的方式来解决这个问题Dim btnUpload As LinkButton = DirectCast(sender, LinkButton)Dim rpItem As RepeaterItem = TryCast(btnUpload.NamingContainer, RepeaterItem)Dim fuContract As FileUpload = rpItem.FindControl("fuContract"),但你的单线要好得多。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多