【问题标题】:Bind ClientID to UserControl property within a Gridview将 ClientID 绑定到 Gridview 中的 UserControl 属性
【发布时间】:2011-01-13 18:32:04
【问题描述】:

我正在尝试将包含一个用户控件的 ClientID 的字符串绑定到另一个控件的属性在 GridView 模板列中。我收到错误 'lblVar02' 未声明。由于其保护级别,它可能无法访问。我该怎么做?

<uc:CriteriaType id="ctVar02" runat="server" 
    OnClientChange="<%# &quot;toggle('&quot; & lblVar02.ClientID & &quot;');&quot; %>"></uc:CriteriaType>
<uc:Label ID="lblVar02" runat="server" />

【问题讨论】:

  • 上面发布的内容是在 GridView 模板列中吗?

标签: asp.net data-binding gridview user-controls


【解决方案1】:

对于遇到此问题的其他任何人,我知道这可以通过三种不同的方式解决。

  1. 不要传入 ClientID 并更改 JavaScript 以爬过 DOM(this.parentNode.getElementsByTagName 或其他东西)寻找其他控件。这个解决方案对我来说似乎很脆弱,因为 ID 可能会改变。
  2. 在 RowDataBound 事件中设置属性。这很简单,但我的页面很大,因为这会在 TrackViewState() 之后发生,它会给我的 ViewState 添加不必要的膨胀。
  3. 将 lblVar02 控件移到 ctVar02 控件中。这就是我最终要做的。我试图将 JavaScript 调用绑定到我的用户控件属性,这样我就可以将它绑定到我的用户控件内标签控件的客户端“单击”事件。通过将一个用户控件移动到另一个用户控件中,我能够将带有 ClientID 的 JavaScript 调用直接绑定到标签的客户端“点击”事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多