次の方法で共有


ParseChildrenAttribute コンストラクタ (Boolean, String)

childrenAsProperties パラメータと defaultProperty パラメータを使用して、ParseChildrenAttribute クラスの新しいインスタンスを初期化します。

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

構文

'宣言
Public Sub New ( _
    childrenAsProperties As Boolean, _
    defaultProperty As String _
)
'使用
Dim childrenAsProperties As Boolean
Dim defaultProperty As String

Dim instance As New ParseChildrenAttribute(childrenAsProperties, defaultProperty)
public ParseChildrenAttribute (
    bool childrenAsProperties,
    string defaultProperty
)
public:
ParseChildrenAttribute (
    bool childrenAsProperties, 
    String^ defaultProperty
)
public ParseChildrenAttribute (
    boolean childrenAsProperties, 
    String defaultProperty
)
public function ParseChildrenAttribute (
    childrenAsProperties : boolean, 
    defaultProperty : String
)
適用できません。

パラメータ

  • childrenAsProperties
    要素をサーバー コントロールのプロパティとして解析する場合は true。それ以外の場合は false
  • defaultProperty
    既定で入れ子の内容を解析した結果が格納される、サーバー コントロールのコレクション プロパティを定義する文字列。

解説

childrenAsProperties が false の場合、要素はコントロールとして解析されます。

使用例

このセクションには、2 つのコード例が含まれています。最初のコード例では、ParseChildrenAttribute クラスのプロパティを設定する方法を示します。2 番目のコード例では、ASP.NET ページでクラスを使用する方法を示します。

次のコード例では、CollectionPropertyControl というカスタム サーバー コントロールの ParseChildrenAttribute オブジェクトを設定する方法を示します。ParseChildrenAttributeChildrenAsProperties プロパティを true に設定し、DefaultProperty プロパティを Employee クラスに設定しています。

' Use the ParseChildren attribute to set the ChildrenAsProperties
' and DefaultProperty properties. Using this constructor, the
' control parses all child controls as properties and must define
' a public property named Employees, which it declares as
' an ArrayList. Nested (child) elements must correspond to
' child elements of the Employees property or to other
' properties of the control.   
<ParseChildren(True, "Employees")> _
<AspNetHostingPermission(SecurityAction.Demand, _
   Level:=AspNetHostingPermissionLevel.Minimal)> _
Public NotInheritable Class CollectionPropertyControl
    Inherits Control
    Private _header As String
    Private _employees As New ArrayList()


    Public Property Header() As String
        Get
            Return _header
        End Get
        Set(ByVal value As String)
            _header = Value
        End Set
    End Property




    Public ReadOnly Property Employees() As ArrayList
        Get
            Return _employees
        End Get
    End Property

    ' Override the CreateChildControls method to 
    ' add child controls to the Employees property when this
    ' custom control is requested from a page.
    Protected Overrides Sub CreateChildControls()
        Dim label As New Label()
        label.Text = Header
        label.BackColor = System.Drawing.Color.Beige
        label.ForeColor = System.Drawing.Color.Red
        Controls.Add(label)
        Controls.Add(New LiteralControl("<BR> <BR>"))

        Dim table As New Table()
        Dim htr As New TableRow()

        Dim hcell1 As New TableHeaderCell()
        hcell1.Text = "Name"
        htr.Cells.Add(hcell1)

        Dim hcell2 As New TableHeaderCell()
        hcell2.Text = "Title"
        htr.Cells.Add(hcell2)

        Dim hcell3 As New TableHeaderCell()
        hcell3.Text = "Alias"
        htr.Cells.Add(hcell3)
        table.Rows.Add(htr)

        table.BorderWidth = Unit.Pixel(2)
        table.BackColor = System.Drawing.Color.Beige
        table.ForeColor = System.Drawing.Color.Red
        Dim employee As Employee
        For Each employee In Employees
            Dim tr As New TableRow()

            Dim cell1 As New TableCell()
            cell1.Text = employee.Name
            tr.Cells.Add(cell1)

            Dim cell2 As New TableCell()
            cell2.Text = employee.Title
            tr.Cells.Add(cell2)

            Dim cell3 As New TableCell()
            cell3.Text = employee.Alias
            tr.Cells.Add(cell3)

            table.Rows.Add(tr)
        Next employee
        Controls.Add(table)
    End Sub 'CreateChildControls 
End Class 
// Use the ParseChildren attribute to set the ChildrenAsProperties
// and DefaultProperty properties. Using this constructor, the
// control parses all child controls as properties and must define
// a public property named Employees, which it declares as
// an ArrayList. Nested (child) elements must correspond to
// child elements of the Employees property or to other
// properties of the control.  
[ParseChildren(true, "Employees")]
[AspNetHostingPermission(SecurityAction.Demand, 
   Level=AspNetHostingPermissionLevel.Minimal)]
public sealed class CollectionPropertyControl : Control
{  
   private String header;
   private ArrayList employees = new ArrayList();
   
   public String Header
   {
      get
      {
         return header;
      }
      set
      {
         header = value;
      }
   }


   
   public ArrayList Employees
   {
      get 
      {
         return employees;
      }
   }
   // Override the CreateChildControls method to 
   // add child controls to the Employees property when this
   // custom control is requested from a page.
   protected override void CreateChildControls()
   {
      Label label = new Label();
      label.Text = Header;
      label.BackColor = System.Drawing.Color.Beige;
      label.ForeColor = System.Drawing.Color.Red;
      Controls.Add(label);
      Controls.Add(new LiteralControl("<BR> <BR>"));

      Table table = new Table();
      TableRow htr = new TableRow();

      TableHeaderCell hcell1 = new TableHeaderCell();    
      hcell1.Text = "Name";
      htr.Cells.Add(hcell1);

      TableHeaderCell hcell2 = new TableHeaderCell();
      hcell2.Text = "Title";
      htr.Cells.Add(hcell2);
      
      TableHeaderCell hcell3 = new TableHeaderCell();
      hcell3.Text = "Alias";
      htr.Cells.Add(hcell3);
      table.Rows.Add(htr);

      table.BorderWidth = 2;
      table.BackColor = System.Drawing.Color.Beige;
      table.ForeColor = System.Drawing.Color.Red;
      foreach (Employee employee in Employees)
      {
         TableRow tr = new TableRow();

         TableCell cell1 = new TableCell();
         cell1.Text = employee.Name;
         tr.Cells.Add(cell1);
         
         TableCell cell2 = new TableCell();
         cell2.Text = employee.Title;
         tr.Cells.Add(cell2);
         
         TableCell cell3 = new TableCell();
         cell3.Text = employee.Alias;
         tr.Cells.Add(cell3);
         
         table.Rows.Add(tr);
      }
      Controls.Add(table);
      
   }
}
// Use the ParseChildren attribute to set the ChildrenAsProperties
// and DefaultProperty properties. Using this constructor, the
// control parses all child controls as properties and must define
// a public property named Employees, which it declares as
// an ArrayList. Nested (child) elements must correspond to
// child elements of the Employees property or to other
// properties of the control.   
/** @attribute ParseChildren(true, "Employees")
 */
public class CollectionPropertyControl extends Control
{
    private String header;
    private ArrayList employees = new ArrayList();

    /** @property 
     */
    public String get_Header()
    {
        return header;
    } //get_Header

    /** @property 
     */
    public void set_Header(String value)
    {
        header = value;
    } //set_Header

    /** @property 
     */
    public ArrayList get_Employees()
    {
        return employees;
    } //get_Employees

    // Override the CreateChildControls method to 
    // add child controls to the Employees property when this
    // custom control is requested from a page.
    protected void CreateChildControls()
    {
        Label label = new Label();
        label.set_Text(get_Header());
        label.set_BackColor(System.Drawing.Color.get_Beige());
        label.set_ForeColor(System.Drawing.Color.get_Red());
        get_Controls().Add(label);
        get_Controls().Add(new LiteralControl("<BR> <BR>"));

        Table table = new Table();
        TableRow htr = new TableRow();

        TableHeaderCell hCell1 = new TableHeaderCell();
        hCell1.set_Text("Name");
        htr.get_Cells().Add(hCell1);

        TableHeaderCell hCell2 = new TableHeaderCell();
        hCell2.set_Text("Title");
        htr.get_Cells().Add(hCell2);

        TableHeaderCell hCell3 = new TableHeaderCell();
        hCell3.set_Text("Alias");
        htr.get_Cells().Add(hCell3);
        table.get_Rows().Add(htr);

        table.set_BorderWidth(new Unit(2));
        table.set_BackColor(System.Drawing.Color.get_Beige());
        table.set_ForeColor(System.Drawing.Color.get_Red());
        Employee employee = null;
        for (int iCtr = 0; iCtr < get_Employees().get_Count(); iCtr++) {
            employee = (Employee)get_Employees().get_Item(iCtr);
            TableRow tr = new TableRow();

            TableCell cell1 = new TableCell();
            cell1.set_Text(employee.get_Name());
            tr.get_Cells().Add(cell1);

            TableCell cell2 = new TableCell();
            cell2.set_Text(employee.get_Title());
            tr.get_Cells().Add(cell2);

            TableCell cell3 = new TableCell();
            cell3.set_Text(employee.get_Alias());
            tr.get_Cells().Add(cell3);

            table.get_Rows().Add(tr);
        }
        get_Controls().Add(table);
    } //CreateChildControls 
} //CollectionPropertyControl

次のコード例では、CollectionPropertyControl クラスと Employee クラスを ASP.NET ページで使用する方法を示します。

<%@ Page Language="VB" %>
<%@ Register TagPrefix="AspSample" Assembly="Samples.AspNet.VB.Controls" Namespace="Samples.AspNet.VB.Controls" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
  
  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    
    ' Verify attribute values.
    Dim p As ParseChildrenAttribute = _
    Attribute.GetCustomAttribute(GetType(CollectionPropertyControl), _
    GetType(ParseChildrenAttribute))

    Dim sb As New StringBuilder()
    sb.Append("The DefaultProperty property is " & p.DefaultProperty.ToString() & "<br />")
    sb.Append("The ChildrenAsProperties property is " & p.ChildrenAsProperties.ToString() & "<br />")
    sb.Append("The IsDefaultAttribute method returns " & p.IsDefaultAttribute().ToString())
    Message.Text = sb.ToString()

  End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>PersistChildrenAttribute</title>
</head>
<body>
    <form id="Form1" runat="server">
    <div>
      <asp:Label ID="Message"
                 runat="server"/>
      <AspSample:CollectionPropertyControl id="CollectionPropertyControl1" 
                                           runat="server">
        <AspSample:Employee Name="Employee 1" 
                            Title="Title 1" 
                            Alias="Alias 1" />
        <AspSample:Employee Name="Employee 2" 
                            Title="Title 2" 
                            Alias="Alias 2" />
      </AspSample:CollectionPropertyControl>
    </div>
    </form>
</body>
</html>
<%@ Page Language="C#" Debug="true" %>
<%@ Register TagPrefix="AspSample" Assembly="Samples.AspNet.CS.Controls" Namespace="Samples.AspNet.CS.Controls" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

  protected void Page_Load(object sender, EventArgs e)
  {
    
    // Verify attribute values.
    ParseChildrenAttribute p = 
      (ParseChildrenAttribute)Attribute.GetCustomAttribute(typeof(CollectionPropertyControl),
      typeof(ParseChildrenAttribute));

    StringBuilder sb = new StringBuilder();
    sb.Append("The DefaultProperty property is " + p.DefaultProperty.ToString() + "<br />");
    sb.Append("The ChildrenAsProperties property is " + p.ChildrenAsProperties.ToString() + "<br />");
    sb.Append("The IsDefaultAttribute method returns " + p.IsDefaultAttribute().ToString());
    Message.Text = sb.ToString();

  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ParseChildrenAttribute Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:Label ID="Message"
                 runat="server"/>
      <AspSample:CollectionPropertyControl id="CollectionPropertyControl1" 
                                           runat="server">
        <AspSample:Employee Name="Employee 1" 
                            Title="Title 1" 
                            Alias="Alias 1" />
        <AspSample:Employee Name="Employee 2" 
                            Title="Title 2" 
                            Alias="Alias 2" />
      </AspSample:CollectionPropertyControl>    
    </div>
    </form>
</body>
</html>

プラットフォーム

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

参照

関連項目

ParseChildrenAttribute クラス
ParseChildrenAttribute メンバ
System.Web.UI 名前空間
ChildrenAsProperties
Default