TreeNodeBinding 類別

定義

TreeView 控制項中,定義資料項目及其繫結節點之間的關係。

public ref class TreeNodeBinding sealed : ICloneable, System::Web::UI::IDataSourceViewSchemaAccessor, System::Web::UI::IStateManager
public sealed class TreeNodeBinding : ICloneable, System.Web.UI.IDataSourceViewSchemaAccessor, System.Web.UI.IStateManager
type TreeNodeBinding = class
    interface IStateManager
    interface ICloneable
    interface IDataSourceViewSchemaAccessor
Public NotInheritable Class TreeNodeBinding
Implements ICloneable, IDataSourceViewSchemaAccessor, IStateManager
繼承
TreeNodeBinding
實作

範例

下表顯示一些範例樹狀節點系結宣告。

範例系結 描述
<asp:TreeNodeBinding TextField="Title" ValueField= "ID"/> Text將樹狀結構中所有節點的 和 Value 屬性分別系結至 Title 資料來源的 和 ID 欄位。 所有節點都會使用此樹狀節點系結宣告, DataMember 因為 未設定 和 Depth 屬性。
<asp:TreeNodeBinding DataMember= "Book" TextField= "Title" ValueField= "ID"/> Text 樹狀結構中所有節點的 和 Value 屬性分別系結至 Title 資料來源中資料項目的 和 ID 欄位 Book
<asp:TreeNodeBinding Depth="2" TextField= "Title" ValueField= "ID"/> Text 樹狀結構中深度為 2 的所有節點和 Value 屬性分別系結至 Title 資料來源中資料項目的 和 ID 欄位。
<asp:TreeNodeBinding DataMember="Book" Depth= "2" TextField= "Title" ValueField= "ID" ImageUrl= "Image.jpg"> Text 樹狀結構中深度為 2 的所有節點和 Value 屬性分別系結至 Title 資料來源中資料項目的 和 ID 欄位 Book 。 同時將 ImageUrl 節點的 屬性系結至靜態值。

本節包含三個程式碼範例。 第一個程式碼範例示範如何以宣告方式使用 TreeNodeBinding 物件來定義節點和資料項目之間的關聯性。 第二個程式碼範例示範如何使用 TreeNodeBinding 物件,以程式設計方式定義節點和資料項目之間的關聯性。 第三個程式碼範例提供第一個和第二個程式碼範例的範例 XML 資料。

下列程式碼範例示範如何以宣告方式使用 TreeNodeBinding 物件來定義節點和資料項目之間的關聯性。 若要讓此範例正常運作,您必須將此程式碼範例之後提供的範例 XML 資料複製到名為 Book.xml 的檔案。


<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>TreeView XML Data Binding Example</title>
</head>
<body>
    <form id="form1" runat="server">
    
      <h3>TreeView XML Data Binding Example</h3>
    
      <asp:TreeView id="BookTreeView" 
        DataSourceID="BookXmlDataSource"
        runat="server">
         
        <DataBindings>
          <asp:TreeNodeBinding DataMember="Book" TextField="Title"/>
          <asp:TreeNodeBinding DataMember="Chapter" TextField="Heading"/>
          <asp:TreeNodeBinding DataMember="Section" TextField="Heading"/>
        </DataBindings>
         
      </asp:TreeView>

      <asp:XmlDataSource id="BookXmlDataSource"  
        DataFile="Book.xml"
        runat="server">
      </asp:XmlDataSource>
    
    </form>
  </body>
</html>

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>TreeView XML Data Binding Example</title>
</head>
<body>
    <form id="form1" runat="server">
    
      <h3>TreeView XML Data Binding Example</h3>
    
      <asp:TreeView id="BookTreeView" 
        DataSourceID="BookXmlDataSource"
        runat="server">
         
        <DataBindings>
          <asp:TreeNodeBinding DataMember="Book" TextField="Title"/>
          <asp:TreeNodeBinding DataMember="Chapter" TextField="Heading"/>
          <asp:TreeNodeBinding DataMember="Section" TextField="Heading"/>
        </DataBindings>
         
      </asp:TreeView>

      <asp:XmlDataSource id="BookXmlDataSource"  
        DataFile="Book.xml"
        runat="server">
      </asp:XmlDataSource>
    
    </form>
  </body>
</html>

下列程式碼範例示範如何以程式設計方式使用 TreeNodeBinding 物件來定義節點和資料項目之間的關聯性。 若要讓此範例正常運作,您必須將下一個程式碼範例中提供的範例 XML 資料複製到名為 Book.xml 的檔案。


<%@ Page Language="C#" %>

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

  void Page_Load(Object sender, EventArgs e)
  {

    // Create a new TreeView control.
    TreeView NewTree = new TreeView();

    // Set the properties of the TreeView control.
    NewTree.ID = "BookTreeView";
    NewTree.DataSourceID = "BookXmlDataSource";

    // Create the tree node binding relationship.

    // Create the root node binding.
    TreeNodeBinding RootBinding = new TreeNodeBinding();
    RootBinding.DataMember = "Book";
    RootBinding.TextField = "Title";

    // Create the parent node binding.
    TreeNodeBinding ParentBinding = new TreeNodeBinding();
    ParentBinding.DataMember = "Chapter";
    ParentBinding.TextField = "Heading";

    // Create the leaf node binding.
    TreeNodeBinding LeafBinding = new TreeNodeBinding();
    LeafBinding.DataMember = "Section";
    LeafBinding.TextField = "Heading";

    // Add bindings to the DataBindings collection.
    NewTree.DataBindings.Add(RootBinding);
    NewTree.DataBindings.Add(ParentBinding); 
    NewTree.DataBindings.Add(LeafBinding);

    // Manually register the event handler for the SelectedNodeChanged event.
    NewTree.SelectedNodeChanged += new EventHandler(this.Node_Change);

    // Add the TreeView control to the Controls collection of the PlaceHolder control.
    ControlPlaceHolder.Controls.Add(NewTree);

  }

  void Node_Change(Object sender, EventArgs e)
  {

    // Retrieve the TreeView control from the Controls collection of the PlaceHolder control.
    TreeView LocalTree = (TreeView)ControlPlaceHolder.FindControl("BookTreeView");

    // Display the selected node.
    Message.Text = "You selected: " + LocalTree.SelectedNode.Text;

  }

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>TreeView Constructor Example</title>
</head>
<body>
    <form id="form1" runat="server">
    
      <h3>TreeView Constructor Example</h3>
      
      <asp:PlaceHolder id="ControlPlaceHolder" runat="server">
      </asp:PlaceHolder>
   
      <asp:XmlDataSource id="BookXmlDataSource"  
        DataFile="Book.xml"
        runat="server">
      </asp:XmlDataSource>
      
      <br /><br />
      
      <asp:Label id="Message" runat="server"/>
    
    </form>
  </body>
</html>

<%@ Page Language="VB" %>

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

  Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)

    ' Create a new TreeView control.
    Dim NewTree As New TreeView

    ' Set the properties of the TreeView control.
    NewTree.ID = "BookTreeView"
    NewTree.DataSourceID = "BookXmlDataSource"

    ' Create the tree node binding relationship.

    ' Create the root node binding.
    Dim RootBinding As New TreeNodeBinding
    RootBinding.DataMember = "Book"
    RootBinding.TextField = "Title"

    ' Create the parent node binding.
    Dim ParentBinding As New TreeNodeBinding
    ParentBinding.DataMember = "Chapter"
    ParentBinding.TextField = "Heading"

    ' Create the leaf node binding.
    Dim LeafBinding As New TreeNodeBinding
    LeafBinding.DataMember = "Section"
    LeafBinding.TextField = "Heading"

    ' Add bindings to the DataBindings collection.
    NewTree.DataBindings.Add(RootBinding)
    NewTree.DataBindings.Add(ParentBinding)
    NewTree.DataBindings.Add(LeafBinding)

    ' Manually register the event handler for the SelectedNodeChanged event.
    AddHandler NewTree.SelectedNodeChanged, AddressOf Node_Change

    ' Add the TreeView control to the Controls collection of the PlaceHolder control.
    ControlPlaceHolder.Controls.Add(NewTree)

  End Sub

  Sub Node_Change(ByVal sender As Object, ByVal e As EventArgs)

    ' Retrieve the TreeView control from the Controls collection of the PlaceHolder control.
    Dim LocalTree As TreeView = CType(ControlPlaceHolder.FindControl("BookTreeView"), TreeView)

    ' Display the selected node.
    Message.Text = "You selected: " & LocalTree.SelectedNode.Text

  End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>TreeView Constructor Example</title>
</head>
<body>
    <form id="form1" runat="server">
    
      <h3>TreeView Constructor Example</h3>
      
      <asp:PlaceHolder id="ControlPlaceHolder" runat="server">
      </asp:PlaceHolder>
   
      <asp:XmlDataSource id="BookXmlDataSource"  
        DataFile="Book.xml"
        runat="server">
      </asp:XmlDataSource>
      
      <br /><br />
      
      <asp:Label id="Message" runat="server"/>
    
    </form>
  </body>
</html>

下列程式碼範例提供上述程式碼範例的範例 XML 資料。

<Book Title="Book Title">  
    <Chapter Heading="Chapter 1">  
        <Section Heading="Section 1">  
        </Section>  
        <Section Heading="Section 2">  
        </Section>  
    </Chapter>  
    <Chapter Heading="Chapter 2">  
        <Section Heading="Section 1">  
        </Section>  
    </Chapter>  
</Book>  

備註

TreeView當控制項系結至資料來源,其中每個資料項目包含多個欄位 (,例如具有數個屬性的 XML 元素) ,節點預設會顯示資料項目方法所 ToString 傳回的值。 在 XML 元素的情況下,節點會顯示元素名稱,以顯示樹狀結構的基礎結構,但不是非常實用。 您可以藉由指定樹狀節點系結,將節點的屬性系結至特定欄位。 TreeNodeBinding物件會定義每個資料項目與其系結之節點之間的關聯性。

控制項 TreeView 會將其 TreeNodeBinding 物件儲存在 屬性中 DataBindings ,並將系結套用至資料來源,以建立樹狀結構階層與資料來源階層之間的一對一關聯性。 針對資料來源中的每個資料項目, TreeView 控制項會嘗試比對資料項目與 TreeNodeBinding 物件,以建立對應的 TreeNode 物件。

建立 TreeNodeBinding 物件時,您必須指定系結的準則。 準則會指出資料項目何時應該系結至節點。 您可以指定 DepthDataMember 屬性,或兩個屬性。 藉由指定兩者,會有稍微的效能提升。 節點深度會指定系結的節點層級。 例如,下列 TreeNodeBinding 宣告會將 Name 資料來源的 和 ID 欄位分別系結至 Text 深度為 0 的所有節點的 和 Value 屬性:

<asp:TreeNodeBinding Depth="0" TextField="Name" ValueField="ID">  

資料成員會指定基礎資料來源中資料項目的類型,但可以根據資料來源來表示不同的資訊。 階層式資料來源中的每個資料項目 (由 System.Web.UI.IHierarchyData 介面表示,) 會公開 IHierarchyData.Type 屬性,這個屬性會指定資料項目的類型。 例如,XML 元素的資料成員會指定專案的名稱。 當資料來源包含多個資料類型時,資料成員會指定要使用的資料類型。 下列 TreeNodeBinding 宣告會將 <Book> 控制項的專案 XmlDataSource 系結至樹狀結構中的所有節點,而不論階層中的位置為何:

<asp:TreeNodeBinding DataMember="Book" TextField="Title" ValueField= "ISBN">  

建立系結準則之後,您就可以系結可系結至值之 TreeNode 物件的 屬性。 您可以系結至資料項目的欄位或靜態值。 系結至靜態值時,套用物件的所有 TreeNode 物件 TreeNodeBinding 都會共用相同的值。

注意

您可以藉由直接在節點中設定對應的屬性,選擇性地覆寫 物件中的 TreeNode 系結屬性。

下表列出 類別的屬性 TreeNodeBinding ,可讓您將 物件的屬性 TreeNode 系結至資料項目的欄位。

屬性 描述
ImageUrlField 要系結至 ImageUrl 物件的 屬性的 TreeNode 欄位。
ImageToolTipField 要系結至 ImageToolTip 物件的 屬性的 TreeNode 欄位。
NavigateUrlField 要系結至 NavigateUrl 物件的 屬性的 TreeNode 欄位。
TextField 要系結至 Text 物件的 屬性的 TreeNode 欄位。
ToolTipField 要系結至 ToolTip 物件的 屬性的 TreeNode 欄位。
ValueField 要系結至 Value 物件的 屬性的 TreeNode 欄位。

下表列出 類別的屬性 TreeNodeBinding ,可讓您將 物件的 屬性 TreeNode 系結至靜態值。

屬性 描述
ImageUrl 要系結至 ImageUrl 物件的 屬性的 TreeNode 靜態值。
ImageToolTip 要系結至 ImageToolTip 物件的 屬性的 TreeNode 靜態值。
NavigateUrl 要系結至 NavigateUrl 物件的 屬性的 TreeNode 靜態值。
PopulateOnDemand 要系結至 PopulateOnDemand 物件的 屬性的 TreeNode 靜態值。
SelectAction 要系結至 SelectAction 物件的 屬性的 TreeNode 靜態值。
ShowCheckBox 要系結至 ShowCheckBox 物件的 屬性的 TreeNode 靜態值。
Target 要系結至 Target 物件的 屬性的 TreeNode 靜態值。
Text 要系結至 Text 物件的 屬性的 TreeNode 靜態值。
ToolTip 要系結至 ToolTip 物件的 屬性的 TreeNode 靜態值。
Value 要系結至 Value 物件的 屬性的 TreeNode 靜態值。

如果定義衝突 TreeNodeBinding 的物件,控制項 TreeView 會以下列優先順序套用樹狀節點系結:

  1. 定義 TreeNodeBinding 及比對深度和資料成員的物件。

  2. TreeNodeBinding 定義並符合資料成員的物件。

  3. TreeNodeBinding 定義並符合深度的物件。

  4. 定義 TreeNodeBinding 深度或資料成員的物件。 (此類型的樹狀節點系結會套用至 tree.)

  5. 資料來源 TreeNodeBinding 中沒有相符專案的物件。 在此情況下,資料項目方法所 ToString 傳回的值會接著系結至 Text 套用物件之節點 TreeNodeBinding 的 和 Value 屬性。

類別 TreeNodeBinding 也可讓您藉由設定 FormatString 屬性,格式化節點中顯示的文字。

建構函式

TreeNodeBinding()

初始化 TreeNodeBinding 類別的新執行個體。

屬性

DataMember

取得或設定值,用於和資料項目的 Type 屬性比對,以判斷是否要套用樹狀節點繫結。

Depth

取得或設定套用 TreeNodeBinding 物件的節點深度。

FormatString

取得或設定字串,指定套用 TreeNodeBinding 物件之節點文字的顯示格式。

ImageToolTip

取得或設定影像的工具提示文字,該影像是顯示在套用 TreeNodeBinding 物件的節點旁。

ImageToolTipField

取得或設定欄位來自資料來源之欄位的名稱,以繫結至套用 ImageToolTip 物件之 TreeNode 物件的 TreeNodeBinding 物件。

ImageUrl

取得或設定影像的 URL,該影像會顯示在套用 TreeNodeBinding 物件的節點旁。

ImageUrlField

取得或設定欄位來自資料來源之欄位的名稱,以繫結至套用 ImageUrl 物件之 TreeNode 物件的 TreeNodeBinding 物件。

NavigateUrl

取得或設定在按一下套用 TreeNodeBinding 物件的節點時連結至的 URL。

NavigateUrlField

取得或設定欄位來自資料來源之欄位的名稱,以繫結至套用 NavigateUrl 物件之 TreeNode 物件的 TreeNodeBinding 物件。

PopulateOnDemand

取得或設定值,指出是否動態填入套用 TreeNodeBinding 物件的節點。

SelectAction

取得或設定在選取套用 TreeNodeBinding 物件的節點時要引發的事件。

ShowCheckBox

取得或設定值,指出是否在套用 TreeNodeBinding 物件的節點旁顯示核取方塊。

Target

取得或設定目標視窗或框架,在其中顯示與套用 TreeNodeBinding 物件之節點相關聯的 Web 網頁內容。

TargetField

取得或設定欄位來自資料來源之欄位的名稱,以繫結至套用 Target 物件之 TreeNode 物件的 TreeNodeBinding 物件。

Text

取得或設定為套用 TreeNodeBinding 物件之節點顯示的文字。

TextField

取得或設定欄位來自資料來源之欄位的名稱,以繫結至套用 Text 物件之 TreeNode 物件的 TreeNodeBinding 物件。

ToolTip

取得或設定套用 TreeNodeBinding 物件之節點的工具提示文字。

ToolTipField

取得或設定欄位來自資料來源之欄位的名稱,以繫結至套用 ToolTip 物件之 TreeNode 物件的 TreeNodeBinding 物件。

Value

取得或設定顯示的值,這個值並未顯示出來,而是用於儲存套用 TreeNodeBinding 物件之節點的任何其他資料 (例如,用於處理回傳事件的資料)。

ValueField

取得或設定欄位來自資料來源之欄位的名稱,以繫結至套用 Value 物件之 TreeNode 物件的 TreeNodeBinding 物件。

方法

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
ToString()

傳回 DataMember 屬性。

明確介面實作

ICloneable.Clone()

建立 TreeNodeBinding 物件的複本。

IDataSourceViewSchemaAccessor.DataSourceViewSchema

如需這個成員的說明,請參閱 DataSourceViewSchema

IStateManager.IsTrackingViewState

如需這個成員的說明,請參閱 IsTrackingViewState

IStateManager.LoadViewState(Object)

載入先前儲存的節點檢視狀態。

IStateManager.SaveViewState()

將檢視狀態變更儲存至物件。

IStateManager.TrackViewState()

指示 TreeNode 物件追蹤其檢視狀態的變更。

適用於

另請參閱