将ClientID绑定到Gridview中的UserControl属性

时间:2011-01-13 18:32:04

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

我正在尝试将包含一个用户控件的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" />

1 个答案:

答案 0 :(得分:0)

对于其他有这个问题的人来说,这可以通过我所知道的三种不同方式解决。

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