次の方法で共有


Control.UniqueID プロパティ

階層構造で修飾されたサーバー コントロールの一意の ID を取得します。

名前空間: System.Web.UI
アセンブリ: System.Web (system.web.dll 内)

構文

'宣言
Public Overridable ReadOnly Property UniqueID As String
'使用
Dim instance As Control
Dim value As String

value = instance.UniqueID
public virtual string UniqueID { get; }
public:
virtual property String^ UniqueID {
    String^ get ();
}
/** @property */
public String get_UniqueID ()
public function get UniqueID () : String
適用できません。

プロパティ値

サーバー コントロールの完全修飾 ID。

解説

UniqueID プロパティにはサーバー コントロールの名前付けコンテナが含まれている点で、このプロパティは ID プロパティとは異なります。この ID は、ページ要求が処理されると自動的に生成されます。

このプロパティは、繰り返されるデータ バインディング サーバー コントロールの中に含まれているサーバー コントロールを区別する場合に、特に重要です。連続しているコントロールである RepeaterDataListDetailsViewFormView、および GridView の各 Web サーバー コントロール (またはデータがバインドされたときに繰り返し機能を含めて作成したカスタム サーバー コントロール) は、子コントロールの名前付けコンテナとして機能します。したがって、ID プロパティ値が競合しないように、子コントロールの一意の名前空間が作成されます。

たとえば、Repeater サーバー コントロールに ASP.NET Label Web サーバー コントロールを含める場合は、Label コントロールに MyLabelID プロパティ値を割り当て、さらに RepeaterMyRepeaterID プロパティ値を割り当てます。Repeater へのデータを、3 つのエントリを持つ ArrayList オブジェクトにバインドした場合、結果として取得される Label サーバー コントロールの各インスタンスの UniqueID プロパティは、MyRepeater$ctl00$MyLabelMyRepeater$ctl01$MyLabel、および MyRepeater$ctl02$MyLabel となります。

使用例

ArrayList オブジェクトを作成して 3 つのテキスト文字列をそのオブジェクトに設定し、ページの読み込み時に ArrayList のデータに Repeater Web サーバー コントロールをバインドする例を次に示します。このコードは、データ バインディング時に生成された各子コントロールの UniqueID プロパティを取得します。また、3 種類の Label コントロールを生成し、それらの UniqueID プロパティ値をページに書き込みます。

  <script language="vb" runat="server">
      
      Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
          Dim sb As New StringBuilder()
          sb.Append("Container: " + _
          MyDataList.NamingContainer.ToString() + "<p>")

          Dim a As New ArrayList()
          a.Add("A")
          a.Add("B")
          a.Add("C")

          MyDataList.DataSource = a
          MyDataList.DataBind()
    
          Dim i As Integer
          Dim l As Label
          For i = 0 To MyDataList.Controls.Count - 1
              l = CType(CType(MyDataList.Controls(i), RepeaterItem).FindControl("MyLabel"), Label)
              sb.Append("Container: " & _
                 CType(MyDataList.Controls(i), RepeaterItem).NamingContainer.ToString() & _
                 "<p>")
              sb.Append("<b>" & l.UniqueID.ToString() & "</b><p>")
          Next
          ResultsLabel.Text = sb.ToString()
      End Sub
</script>
<script language="c#" runat="server">
    
  void Page_Load(Object sender, EventArgs e) 
  {
      StringBuilder sb = new StringBuilder();
      sb.Append("Container: " + 
          MyDataList.NamingContainer.ToString() + "<p>");

      ArrayList a = new ArrayList();
      a.Add("A");
      a.Add("B");
      a.Add("C");

      MyDataList.DataSource = a;
      MyDataList.DataBind();

      for (int i = 0; i < MyDataList.Controls.Count; i++)
      {
          Label l = 
              (Label)((RepeaterItem)MyDataList.Controls[i]).FindControl("MyLabel");
          sb.Append("Container: " + 
              ((RepeaterItem)MyDataList.Controls[i]).NamingContainer.ToString() + 
              "<p>");
          sb.Append("<b>" + l.UniqueID + "</b><p>");
      }
      ResultsLabel.Text = sb.ToString();
}
</script>

プラットフォーム

Windows 98,Windows Server 2000 SP4,Windows CE,Windows Millennium Edition,Windows Mobile for Pocket PC,Windows Mobile for Smartphone,Windows Server 2003,Windows XP Media Center Edition,Windows XP Professional x64 Edition,Windows XP SP2,Windows XP Starter Edition

Microsoft .NET Framework 3.0 は Windows Vista,Microsoft Windows XP SP2,および Windows Server 2003 SP1 でサポートされています。

バージョン情報

.NET Framework

サポート対象 : 3.0,2.0,1.1,1.0

参照

関連項目

Control クラス
Control メンバ
System.Web.UI 名前空間
Control.ID プロパティ
Control.NamingContainer プロパティ