在Repeater中获取控件的ClientId

Posted

技术标签:

【中文标题】在Repeater中获取控件的ClientId【英文标题】:Get ClientId of control in Repeater 【发布时间】:2015-04-22 10:03:17 【问题描述】:

中继器在创建项目时触发事件

 Protected Sub Repeater1_ItemCreated(sender As Object, e As RepeaterItemEventArgs) Handles Repeater1.ItemCreated

并且可以捕获和修改这个单一数据行上的控件。

Dim lnk As HyperLink = CType(e.Item.FindControl("lblShipmentDetails"), HyperLink)

现在的问题是,对于任何 javascript,都需要确定正确的客户端 ID。但该控件不保存客户端 ID,只保存 lblShipmentDetails 字符串。

MSDN 是怎么说的:

https://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode%28v=vs.110%29.aspx

https://msdn.microsoft.com/en-us/library/1d04y8ss%28v=vs.140%29.aspx

或代码项目:

http://www.codeproject.com/Articles/108887/Client-Ids-Generation-with-ASP-NET

但是如何从 Repeater 中获取正确的 ClientID 以在 JavaScript 中使用它呢?

源是使用自动 ID 生成的。如何获得这个id?

【问题讨论】:

【参考方案1】:

使用DataBound 事件。中继器要获取控件ID,需要先绑定数据。然后只需在 Created 事件中询问 ID。

    Protected Sub Repeater1_ItemDataBound(sender As Object, e As RepeaterItemEventArgs) Handles Repeater1.ItemDataBound
    If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
        Dim btn As Button = CType(e.Item.FindControl("btnOrderTrackingConfirmMove"), Button)
        If btn IsNot Nothing Then
            Dim RealId As String = btn.Page.ClientScript.GetPostBackEventReference(btn, String.Empty).ToString

        End If
    End If
End Sub

【讨论】:

以上是关于在Repeater中获取控件的ClientId的主要内容,如果未能解决你的问题,请参考以下文章

Repeater 控件的嵌套使用

Repeater控件 ---表格展示数据

asp.net 中repeater控件和linkbutton 的使用方法有哪些?

c#中关于repeater控件的说法

2017-05-18WebForm的Repeater控件和一些简单控件

2017-5-18 Repeater控件 和 简单控件