TreeNodeBinding 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
在 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 物件時,您必須指定系結的準則。 準則會指出資料項目何時應該系結至節點。 您可以指定 Depth 或 DataMember 屬性,或兩個屬性。 藉由指定兩者,會有稍微的效能提升。 節點深度會指定系結的節點層級。 例如,下列 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 會以下列優先順序套用樹狀節點系結:
定義 TreeNodeBinding 及比對深度和資料成員的物件。
只 TreeNodeBinding 定義並符合資料成員的物件。
只 TreeNodeBinding 定義並符合深度的物件。
定義 TreeNodeBinding 深度或資料成員的物件。 (此類型的樹狀節點系結會套用至 tree.)
資料來源 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 物件追蹤其檢視狀態的變更。 |
適用於
另請參閱
- TreeView
- TreeNode
- TreeNodeBindingCollection
- XmlDataSource
- DataBindings
- DataMember
- Depth
- FormatString
- ImageUrl
- ImageUrlField
- ImageToolTip
- ImageToolTipField
- NavigateUrl
- NavigateUrl
- NavigateUrlField
- PopulateOnDemand
- SelectAction
- ShowCheckBox
- Target
- Text
- Text
- TextField
- ToolTip
- ToolTip
- ToolTipField
- Value
- Value
- ValueField