【问题标题】:Repeater: databind server-side ID in item control?中继器:项目控制中的数据绑定服务器端 ID?
【发布时间】:2014-11-18 06:30:59
【问题描述】:

在将数据源绑定到Repeater 控件时,是否可以将数据绑定到ItemTemplate 内的服务器端控件的ID 属性?像这样:

<asp:Repeater ID="rptToolTips" runat="server">
    <ItemTemplate>

        <telerik:RadToolTip ID="tt<%# Eval("Name") %>" ClientIDMode="Static" runat="server">
            <div class="tip">
                <div class="segName">Segment #<%# Eval("Name") %></div>
                <div>Flow:<%# Eval("Flow", "{0:N}") %></div>
            </div>
        </telerik:RadToolTip>

    </ItemTemplate>     
</asp:Repeater>

...这里我试图将 RadToolTip 的 ID 属性设置为“tt[name-value]”。我尝试了一些变体,但它们无效:

ID="tt<%# Eval("Name") %>"

ID='tt<%# Eval("Name") %>'

ID="tt<%# Eval('Name') %>"

【问题讨论】:

    标签: asp.net repeater


    【解决方案1】:

    另请参阅this 我对 SO 的一个问题的回答,以另一种方式(使用纯 JavaScript 的 this 对象而不是使用自定义属性来获取 clientID)执行此操作。

    只是想保持这些链接以供将来参考。

    【讨论】:

      【解决方案2】:

      这是不可能的。服务器控件的 ID 在创建时或设计时设置。设置后,您无法在数据绑定期间对其进行重置。

      但是,如果您尝试在 JQueryJavaScript 中使用此 ID 值,则可以使用以下 hack。

      向您的控件添加自定义属性(给它起任何您喜欢的名称,在这种情况下我将使用 myId

      myId='<%# Eval("Name") %>'
      

      不,您可以通过 myId 属性找到此元素

      希望这会有所帮助。

      【讨论】:

      • 谢谢。我曾希望嵌套控件是在数据绑定时创建的,因此它们的 ID 可以设置为与使用静态字符串作为 ID 时相同(有效)......但听起来并不那么简单。跨度>
      【解决方案3】:

      试试这个分配ID

      ID=' "tt" + '

      【讨论】:

      • 你试过了吗?无效。
      • 抱歉,暂时无法尝试。试试这个 id=''
      • 我认为这行不通,因为它的语法与我失败的尝试相同。我不是真的在寻找建议,我问是否有人知道这是否可能。谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多