MenuItemBinding 類別

定義

Menu 控制項中,定義資料項目及其繫結功能表項目之間的關係。 此類別無法獲得繼承。

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

範例

下列程式碼範例示範如何使用 MenuItemBinding 物件來定義控制項欄位 XmlDataSource 與控制項中 Menu 功能表項目之間的關聯性。 若要讓此範例正常運作,您必須將下面的範例 XML 資料複製到名為 Menu.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>MenuItemBinding Example</title>
</head>
<body>
    <form id="form1" runat="server">

      <h3>MenuItemBinding Example</h3>

      <asp:menu id="NavigationMenu"
        datasourceid="MenuSource"
        runat="server">
        
        <DataBindings>
        
          <asp:menuitembinding datamember="MapHomeNode"
            formatstring="({0})" 
            textfield="Title"
            valuefield="Description"
            imageurlfield="ImageUrl"
            tooltipfield="ToolTip"
            target="_self" />
          <asp:menuitembinding datamember="MapNode" 
            depth="1"
            formatstring="[{0}]" 
            textfield="Title"
            valuefield="Description"
            imageurlfield="ImageUrl"
            tooltipfield="ToolTip"
            target="_blank"/>
          <asp:menuitembinding datamember="MapNode" 
            depth="2"
            formatstring="<{0}>" 
            textfield="Title"
            valuefield="Description"
            imageurlfield="ImageUrl"
            tooltipfield="ToolTip"
            target="_blank"/>
          
        </DataBindings>
        
      </asp:menu>

      <asp:xmldatasource id="MenuSource"
        datafile="Menu.xml"
        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">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>MenuItemBinding Example</title>
</head>
<body>
    <form id="form1" runat="server">

      <h3>MenuItemBinding Example</h3>

      <asp:menu id="NavigationMenu"
        datasourceid="MenuSource"
        runat="server">
        
        <DataBindings>
        
          <asp:menuitembinding datamember="MapHomeNode"
            formatstring="({0})" 
            textfield="Title"
            valuefield="Description"
            imageurlfield="ImageUrl"
            tooltipfield="ToolTip"
            target="_self" />
          <asp:menuitembinding datamember="MapNode" 
            depth="1"
            formatstring="[{0}]" 
            textfield="Title"
            valuefield="Description"
            imageurlfield="ImageUrl"
            tooltipfield="ToolTip"
            target="_blank"/>
          <asp:menuitembinding datamember="MapNode" 
            depth="2"
            formatstring="<{0}>" 
            textfield="Title"
            valuefield="Description"
            imageurlfield="ImageUrl"
            tooltipfield="ToolTip"
            target="_blank"/>
          
        </DataBindings>
        
      </asp:menu>

      <asp:xmldatasource id="MenuSource"
        datafile="Menu.xml"
        runat="server"/> 

    </form>
  </body>
</html>

下列程式碼是上述範例的範例網站地圖資料。

<MapHomeNode ImageUrl="~\Images\Home.gif"

Title="Home"

Description="Root Page"

ToolTip="Home Page">

<MapNode ImageUrl="~\Images\Music.gif"

Title="Music"

Description="Music Category"

ToolTip="Music Page">

<MapNode ImageUrl="~\Images\Classical.gif"

Title="Classical"

Description="Classical Section"

ToolTip="Classical Page"/>

<MapNode ImageUrl="~\Images\Rock.gif"

Title="Rock"

Description="Rock Section"

ToolTip="Rock Page"/>

<MapNode ImageUrl="~\Images\Jazz.gif"

Title="Jazz"

Description="Jazz Section"

ToolTip="Jazz Page"/>

</MapNode>

<MapNode ImageUrl="~\Images\Movies.gif"

Title="Movies"

Description="Movies Category"

ToolTip="Movies Page">

<MapNode ImageUrl="~\Images\Action.gif"

Title="Action"

Description="Action Section"

ToolTip="Action Page"/>

<MapNode ImageUrl="~\Images\Drama.gif"

Title="Drama"

Description="Drama Section"

ToolTip="Drama Page"/>

<MapNode ImageUrl="~\Images\Musical.gif"

Title="Musical"

Description="Musical Section"

ToolTip="Musical Page"/>

</MapNode>

</MapHomeNode>

備註

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

注意

Menu當控制項系結至 SiteMapDataSource 控制項時,功能表項目系結不會有任何作用。 系結會使用網站地圖提供者自動執行。

控制項 Menu 會將物件儲存在 屬性中 DataBindings ,並將系 MenuItemBinding 結套用至資料來源,以建立功能表階層與資料來源階層之間的一對一關聯性。 針對資料來源中的每個資料項目, Menu 控制項會嘗試將資料項目與 MenuItemBinding 物件相符,以建立對應的 MenuItem 物件。

建立 MenuItemBinding 物件時,您必須指定系結的準則。 準則會指出資料項目何時應該系結至功能表項目。 您可以指定 DepthDataMember 或 兩者。

功能表項目深度會指定系結的功能表層級。 例如,下列 MenuItemBinding 宣告會將資料來源的 Name 和 ID 欄位分別系結至 Text 深度為 0 的所有節點的 和 Value 屬性:

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

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

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

有時候您可能需要建立功能表項目系結,以指定深度和資料成員。 當資料來源包含具有相同資料成員值的不同層級的專案時,通常會使用這個值。 例如,您可以有 <Item> 出現在 XML 檔案內不同層級的專案。 下列 MenuItemBinding 宣告示範如何指定套用至不同功能表深度相同資料成員的功能表項目系結:

<asp:MenuItemBinding DataMember="Item" Depth="1" TextField="Title">

<asp:MenuItemBinding DataMember="Item" Depth="2" TextField="ISBN">

如果沒有深度和資料成員定義功能表項目系結,功能表項目系結就會套用至功能表內的所有功能表項目。 不論功能表深度為何,所有資料項目都有相同的屬性,而且應該以相同方式顯示時,通常會使用此方式。

建立系結準則之後,您就可以系結可系結至值的 物件屬性 MenuItem 。 您可以系結至資料項目的欄位或靜態值。 系結至靜態值時,套用物件的所有 MenuItem 物件 MenuItemBinding 都會共用相同的值。 系結至欄位的屬性包含資料來源中對應欄位的值。

注意

您可以直接設定對應的屬性,選擇性地覆寫 物件中的 MenuItem 系結屬性。

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

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

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

屬性 描述
ImageUrl 要系結至 ImageUrl 物件的 屬性的 MenuItem 靜態值。
NavigateUrl 要系結至 NavigateUrl 物件的 屬性的 MenuItem 靜態值。
Target 要系結至 Target 物件的 屬性的 MenuItem 靜態值。
Text 要系結至 Text 物件的 屬性的 MenuItem 靜態值。
ToolTip 要系結至 ToolTip 物件的 屬性的 MenuItem 靜態值。
Value 要系結至 Value 物件的 屬性的 MenuItem 靜態值。

如果定義衝突 MenuItemBinding 的物件, Menu 控制項會以下列優先順序套用功能表項目系結:

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

  2. MenuItemBinding只定義及符合資料成員的物件。

  3. MenuItemBinding定義和只符合深度的物件。

  4. MenuItemBinding定義深度和資料成員的物件。 (此類型的功能表項目系結會套用至 menu.)

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

類別 MenuItemBinding 也可讓您藉由設定 FormatString 屬性,格式化功能表項目中顯示的文字。

建構函式

MenuItemBinding()

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

屬性

DataMember

取得或設定要繫結至功能表項目的資料成員。

Depth

取得或設定套用 MenuItemBinding 物件的功能表深度。

Enabled

取得或設定值,指出套用 MenuItemBinding 物件的功能表項目是否已啟用,讓項目能夠顯示快顯影像及任何子功能表項目。

EnabledField

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

FormatString

取得或設定字串,指定套用 MenuItemBinding 物件之功能表項目文字的顯示格式。

ImageUrl

取得或設定影像的 URL,該影像會顯示在套用 MenuItemBinding 物件之功能表項目的文字旁。

ImageUrlField

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

NavigateUrl

取得或設定在按一下套用 MenuItemBinding 物件的功能表項目時連結至的 URL。

NavigateUrlField

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

PopOutImageUrl

取得或設定影像的 URL,該影像表示套用 MenuItemBinding 物件的功能表項目是否有動態 (Dynamic) 子功能表。

PopOutImageUrlField

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

Selectable

取得或設定值,指出套用 MenuItemBinding 物件的功能表項目是否可選取,或是否為「可點選」。

SelectableField

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

SeparatorImageUrl

取得或設定影像的 URL,對於套用 MenuItemBinding 物件的功能表項目,該影像會顯示於功能表項目的文字下方 (以將其本身與其他功能表項目加以分隔)。

SeparatorImageUrlField

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

Target

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

TargetField

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

Text

取得或設定為套用 MenuItemBinding 物件之功能表項目所顯示的文字。

TextField

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

ToolTip

取得或設定套用 MenuItemBinding 物件之功能表項目的工具提示文字。

ToolTipField

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

Value

取得或設定非顯示值,這個值是用來儲存與套用 MenuItemBinding 物件之功能表項目相關的任何其他資料,例如,用於處理回傳事件的資料。

ValueField

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

方法

Equals(Object)

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

(繼承來源 Object)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
ToString()

傳回代表目前物件的字串。

明確介面實作

ICloneable.Clone()

建立 MenuItemBinding 物件的複本。

IDataSourceViewSchemaAccessor.DataSourceViewSchema

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

IStateManager.IsTrackingViewState

取得值,指出 MenuItemBinding 物件是否正在儲存變更至它的檢視狀態。

IStateManager.LoadViewState(Object)

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

IStateManager.SaveViewState()

將檢視狀態變更儲存至 Object

IStateManager.TrackViewState()

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

適用於

另請參閱