none
Webユーザーコントロールで自動生成されるコントロールIDを取得する方法 RRS feed

  • 質問

  • Webユーザーコントロール上で
    動的にテーブルとラジオボタン、ラベルを作成し、
    以下のようなコントロールを動的に出力することを試みています。

    <table>
      <tr>
       <td><input type="radio" name="check1" id="check2" value="2"></td>
       <td><label for="check2">Yes</label></td>
      </tr>
    </table>

    テーブルの2列目には、1列目のラジオボタンに対応するテキストが含まれていて、
    <label for > の記述により、マウスクリックでラジオボタンのオン/オフが連動するように
    したいです。
    その為、ラジオボタンのIDを<label for=> の部分に指定する必要があります。

    しかし、Webユーザーコントロール内で ID=2 を指定して作成したラジオボタンが
    実際の出力時には以下のように "WC_Control1_ctl07_2" というふうに
    動的に変更されてしまい、<label for> の部分に挿入するIDを
    うまく指定することができません。

    <tr>
        <td><input id="WC_Control1_ctl07_2" type="radio" name="WC_Control1$ctl07$GP_2" value="2" /></td>
        <td><label for="2">Yes</td>
    </tr>

    Webユーザーコントロールが最終的に出力するコントロールIDを取得する方法が
    ありましたらご教授いただけないでしょうか。

    2009年4月6日 4:15

回答

  • このようなケースには通常ClientIDを利用しますが、これは利用できませんでしょうか?


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク ペレイラ 2009年4月6日 12:07
    2009年4月6日 6:25
    モデレータ

すべての返信

  • このようなケースには通常ClientIDを利用しますが、これは利用できませんでしょうか?


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク ペレイラ 2009年4月6日 12:07
    2009年4月6日 6:25
    モデレータ
  • trapemiya 様

    ありがとうございます。 ClientID で"WC_Control1_ctl07_2" というIDが
    取得できました。

    ただし、Webユーザーコントロール内のPage_Initでは ID = ClientIDとなり
    Page_Load 内(以降?)でしか取得できないようです。
    仕組み上、これは仕方のないことですね。

    大変助かりました。

    2009年4月6日 12:07
  • WebControl を継承してカスタム RadioButton コントロールを作ってはいかがですか?

    RenderContents メソッドを override してその中でタグを組み立てれば自由に id, name,
    value 等を設定できますが。

    2009年4月6日 14:10