2011-01-13 19 views
0

1つのユーザーコントロールのClientIDを含む文字列を、GridViewテンプレート列内の別のコントロールのプロパティにバインドしようとしています。エラーが発生する'lblVar02'が宣言されていません。保護レベルのためにアクセスできない場合があります。どうすればいいですか?GridView内のClientIDからUserControlプロパティへのバインド

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

上記のGridViewテンプレート列の内容は何ですか? –

+0

@Brian、はい – adam0101

答えて

0

この問題を抱えている他の人にとっては、これは私が知っている3つの異なる方法で解決できる可能性があります。

  1. ClientIDを渡して、他のコントロールを探しているDOM(this.parentNode.getElementsByTagNameなど)をクロールするようにJavaScriptを変更しないでください。 Idのものが変わる可能性があるので、この解決策は私にとっては見苦しいようでした。
  2. RowDataBoundイベントでプロパティを設定します。これはシンプルですが、私のページは膨大で、TrackViewState()の後に発生するので、不要なbloatがViewStateに追加されます。
  3. lblVar02コントロールをctVar02コントロール内に移動します。これは私がやったことです。 JavaScriptコントロールをユーザーコントロールプロパティにバインドしようとしていたので、ユーザーコントロール内のラベルコントロールのクライアント側の「クリック」イベントにバインドできました。あるユーザーコントロールを別のユーザーコントロール内に移動することで、JavaScriptの呼び出しをClientIDで直接ラベルのクライアント側の「クリック」イベントにバインドすることができました。
関連する問題