XmlDataSource 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示資料繫結控制項的 XML 資料來源。
public ref class XmlDataSource : System::Web::UI::HierarchicalDataSourceControl, System::ComponentModel::IListSource, System::Web::UI::IDataSource
[System.Drawing.ToolboxBitmap(typeof(System.Web.UI.WebControls.XmlDataSource))]
public class XmlDataSource : System.Web.UI.HierarchicalDataSourceControl, System.ComponentModel.IListSource, System.Web.UI.IDataSource
[<System.Drawing.ToolboxBitmap(typeof(System.Web.UI.WebControls.XmlDataSource))>]
type XmlDataSource = class
inherit HierarchicalDataSourceControl
interface IDataSource
interface IListSource
Public Class XmlDataSource
Inherits HierarchicalDataSourceControl
Implements IDataSource, IListSource
- 繼承
- 屬性
- 實作
範例
本節包含兩個程式碼範例。 第一個 XmlDataSource 程式碼範例示範如何使用 控制項搭配 TreeView 控制項,來顯示範例 XML 檔案中的 XML 資料。 第二個 XmlDataSource 範例示範如何使用控制項搭配樣板化 Repeater 控制項來顯示 XML 資料。
下列程式碼範例示範如何搭配 TreeView 控制項使用 XmlDataSource 控制項來顯示 XML 資料。 會 XmlDataSource 從 屬性所 DataFile 識別的 XML 檔案載入 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>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<asp:xmldatasource
id="XmlDataSource1"
runat="server"
datafile="books.xml" />
<!- TreeView uses hierachical data, so the
XmlDataSource uses an XmlHierarchicalDataSourceView
when a TreeView is bound to it. -->
<asp:TreeView
id="TreeView1"
runat="server"
datasourceid="XmlDataSource1">
<databindings>
<asp:treenodebinding datamember="book" textfield="title"/>
</databindings>
</asp:TreeView>
</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>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<asp:xmldatasource
id="XmlDataSource1"
runat="server"
datafile="books.xml" />
<!- TreeView uses hierachical data, so the
XmlDataSource uses an XmlHierarchicalDataSourceView
when a TreeView is bound to it. -->
<asp:TreeView
id="TreeView1"
runat="server"
datasourceid="XmlDataSource1">
<databindings>
<asp:treenodebinding datamember="book" textfield="title"/>
</databindings>
</asp:TreeView>
</form>
</body>
</html>
程式碼範例中的 XML 檔案具有下列資料:
<books>
<computerbooks>
<book title="Secrets of Silicon Valley" author="Sheryl Hunter"/>
<book title="Straight Talk About Computers" author="Dean Straight"/>
<book title="You Can Combat Computer Stress!" author="Marjorie Green"/>
</computerbooks>
<cookbooks>
<book title="Silicon Valley Gastronomic Treats" author="Innes del Castill"/>
</cookbooks>
</books>
下列程式碼範例示範如何使用 XmlDataSource 控制項搭配樣板化 Repeater 控制項來顯示 XML 資料。 控制項 Repeater 會使用 XPath 資料系結運算式,系結至 所代表之 XML 檔中 XmlDataSource 的資料項目。 如需 和 XPathSelect
資料系結語法的詳細資訊 XPath
,請參閱 類別 XPathBinder 。
<%@ 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>Order</title>
</head>
<body>
<form id="form1" runat="server">
<asp:XmlDataSource
runat="server"
id="XmlDataSource1"
XPath="orders/order"
DataFile="order.xml" />
<asp:Repeater ID="Repeater1"
runat="server"
DataSourceID="XmlDataSource1">
<ItemTemplate>
<h2>Order</h2>
<table>
<tr>
<td>Customer</td>
<td><%#XPath("customer/@id")%></td>
<td><%#XPath("customername/firstn")%></td>
<td><%#XPath("customername/lastn")%></td>
</tr>
<tr>
<td>Ship To</td>
<td><%#XPath("shipaddress/address1")%></font></td>
<td><%#XPath("shipaddress/city")%></td>
<td><%#XPath("shipaddress/state")%>,
<%#XPath("shipaddress/zip")%></td>
</tr>
</table>
<h3>Order Summary</h3>
<asp:Repeater ID="Repeater2"
DataSource='<%#XPathSelect("summary/item")%>'
runat="server">
<ItemTemplate>
<b><%#XPath("@dept")%></b> -
<%#XPath(".")%><br />
</ItemTemplate>
</asp:Repeater>
<hr />
</ItemTemplate>
</asp:Repeater>
</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>Order</title>
</head>
<body>
<form id="form1" runat="server">
<asp:XmlDataSource
runat="server"
id="XmlDataSource1"
XPath="orders/order"
DataFile="order.xml" />
<asp:Repeater ID="Repeater1"
runat="server"
DataSourceID="XmlDataSource1">
<ItemTemplate>
<h2>Order</h2>
<table>
<tr>
<td>Customer</td>
<td><%#XPath("customer/@id")%></td>
<td><%#XPath("customername/firstn")%></td>
<td><%#XPath("customername/lastn")%></td>
</tr>
<tr>
<td>Ship To</td>
<td><%#XPath("shipaddress/address1")%></font></td>
<td><%#XPath("shipaddress/city")%></td>
<td><%#XPath("shipaddress/state")%>,
<%#XPath("shipaddress/zip")%></td>
</tr>
</table>
<h3>Order Summary</h3>
<asp:Repeater ID="Repeater2"
DataSource='<%#XPathSelect("summary/item")%>'
runat="server">
<ItemTemplate>
<b><%#XPath("@dept")%></b> -
<%#XPath(".")%><br />
</ItemTemplate>
</asp:Repeater>
<hr />
</ItemTemplate>
</asp:Repeater>
</form>
</body>
</html>
程式碼範例中的 XML 檔案具有下列資料:
<?xml version="1.0" encoding="iso-8859-1"?>
<orders>
<order>
<customer id="12345" />
<customername>
<firstn>John</firstn>
<lastn>Smith</lastn>
</customername>
<transaction id="12345" />
<shipaddress>
<address1>1234 Tenth Avenue</address1>
<city>Bellevue</city>
<state>Washington</state>
<zip>98001</zip>
</shipaddress>
<summary>
<item dept="tools">screwdriver</item>
<item dept="tools">hammer</item>
<item dept="plumbing">fixture</item>
</summary>
</order>
</orders>
備註
本主題內容:
簡介
控制項 XmlDataSource 是資料來源控制項,會將 XML 資料呈現給資料繫結控制項。 資料 XmlDataSource 繫結控制項可以使用控制項來顯示階層式和表格式資料。 控制項 XmlDataSource 通常用來在唯讀案例中顯示階層式 XML 資料。 XmlDataSource因為 控制項會 HierarchicalDataSourceControl 擴充 類別,所以它適用于階層式資料。 控制項 XmlDataSource 也會實作 介面, IDataSource 並搭配表格式或清單樣式的資料使用。
注意
基於安全性考慮,控制項屬性都不會 XmlDataSource 儲存在檢視狀態。 由於技術上可以解碼用戶端上檢視狀態的內容,因此儲存資料結構或其內容的敏感性資訊可能會讓您暴露在資訊洩漏威脅中。 請注意,如果您需要將屬性等 XPath 資訊儲存在檢視狀態中,您可以藉由在 指示詞上 @ Page
設定 ViewStateEncryptionMode 來啟用加密來保護內容。
頁面開發人員會 XmlDataSource 使用 控制項,使用資料繫結控制項來顯示 XML 資料。
XML 資料的來源
XmlDataSource通常會從 屬性所 DataFile 指定的 XML 檔案載入 XML 資料。 XML 資料也可以使用 屬性,直接由資料來源控制項以字串形式 Data 儲存。 如果您想要先轉換 XML 資料,再由資料繫結控制項顯示,您可以針對轉換提供可延伸樣式表單語言 (XSL) 樣式表單。 如同 XML 資料,您通常會從 屬性所指示 TransformFile 的檔案載入樣式表單,但您也可以直接使用 Transform 屬性將它儲存在字串格式中。
更新 XML 資料
控制項 XmlDataSource 通常用於唯讀資料案例,其中資料繫結控制項會顯示 XML 資料。 不過,您也可以使用 XmlDataSource 控制項來編輯 XML 資料。 若要編輯 XML 資料,請呼叫 GetXmlDocument 方法,以擷取 XmlDataDocument XML 資料記憶體內部表示的物件。 您可以使用 所 XmlDataDocument 公開的物件模型及其 XmlNode 包含的物件,或使用 XPath 篩選運算式來管理檔中的資料。 當您變更 XML 資料的記憶體內部表示時,您可以呼叫 Save 方法來將它儲存到磁片。
控制項的編輯功能 XmlDataSource 有一些限制:
XML 資料必須從 屬性所指示 DataFile 的 XML 檔案載入,而不是從 屬性中指定的 Data 內嵌 XML 載入。
無法在 或 TransformFile 屬性中 Transform 指定 XSLT 轉換。
方法 Save 不會處理不同要求的並行儲存作業。 如果有多個使用者透過 XmlDataSource 編輯 XML 檔案,則不保證所有使用者都使用相同的資料運作。 作業也可能 Save 因為這些相同的並行問題而失敗。
指定 XSL 轉換
使用 XML 資料執行的一般作業是從一個 XML 資料集轉換成另一個 XML 資料集。 XmlDataSource控制項支援具有 Transform 和 TransformFile 屬性的 XML 轉換,它會指定要套用至 XML 資料的 XSL 樣式表單,再傳遞至資料繫結控制項,而 TransformArgumentList 屬性可讓您在轉換期間提供 XSL 樣式表單引數供 XSL 樣式表單使用的動態 XSLT 樣式表單引數。 如果您使用 屬性指定 XPath 篩選運算式 XPath ,則會在轉換發生之後套用它。
注意
類別 XmlDataSource 會使用已被取代的 XslTransform 類別來執行 XSL 轉換。 如果您想要使用類別已被取代之後 XslTransform 引進的樣式表單功能,請使用 類別手動套用 XslCompiledTransform 轉換。
使用 XPath 運算式篩選
根據預設, XmlDataSource 控制項會載入屬性所 DataFile 識別之 XML 檔案中的所有 XML 資料,或在 屬性中找到 Data 內嵌的 XML 資料,但您可以使用 XPath 運算式來篩選資料。 屬性 XPath 支援在載入和轉換 XML 資料之後套用的 XPath 語法篩選。
Caching
為了達到效能目的,預設會針對 XmlDataSource 控制項啟用快取。 每次要求的頁面都可以降低應用程式的效能時,在伺服器上開啟和讀取 XML 檔案。 快取可讓您減少伺服器上的處理負載,但代價是 Web 服務器上的記憶體;在大部分情況下,這是良好的取捨。 當 XmlDataSource 屬性設定 true
為 時 EnableCaching ,會自動快取資料,而且 CacheDuration 屬性會設定為快取在快取失效前儲存資料的秒數。 您可以使用 CacheExpirationPolicy 來進一步微調資料來源控制項的快取行為。
其他功能
下表列出 控制項支援 XmlDataSource 的其他功能。
功能 | 描述 |
---|---|
排序 | 控制項不支援 XmlDataSource 。 |
篩選 | XPath屬性可用來使用適當的 XPath 運算式來篩選 XML 資料。 |
Paging | 控制項不支援 XmlDataSource 。 |
更新 | 支援直接操作 XmlDataDocument ,然後呼叫 Save 方法。 |
刪除 | 支援直接操作 XmlDataDocument ,然後呼叫 Save 方法。 |
插入 | 支援直接操作 XmlDataDocument ,然後呼叫 Save 方法。 |
Caching | 根據預設 CacheDuration ,屬性設定為 0 (無限) ,而 CacheExpirationPolicy 屬性設定為 Absolute 。 |
資料檢視物件
XmlDataSource因為控制項支援顯示階層式資料的資料繫結控制項,以及顯示表格式資料的控制項,所以資料來源控制項在其基礎 XML 資料上支援多種資料來源檢視物件類型。 當與顯示表格式資料的資料繫結控制項搭配使用時,控制項 XmlDataSource 會擷取單一具名 XmlDataSourceView 物件。 方法 GetViewNames 會識別這個單一具名檢視。 搭配顯示階層式資料的資料繫結控制項使用時, XmlDataSource 控制項會 XmlHierarchicalDataSourceView 擷取傳遞給 方法之任何唯一階層式路徑的 GetHierarchicalView 。
宣告式語法
<asp:XmlDataSource
CacheDuration="string|Infinite"
CacheExpirationPolicy="Absolute|Sliding"
CacheKeyDependency="string"
DataFile="string"
EnableCaching="True|False"
EnableTheming="True|False"
EnableViewState="True|False"
ID="string"
OnDataBinding="DataBinding event handler"
OnDisposed="Disposed event handler"
OnInit="Init event handler"
OnLoad="Load event handler"
OnPreRender="PreRender event handler"
OnTransforming="Transforming event handler"
OnUnload="Unload event handler"
runat="server"
SkinID="string"
TransformArgumentList="string"
TransformFile="string"
Visible="True|False"
XPath="string"
>
<Data>string</Data>
<Transform>string</Transform>
</asp:XmlDataSource>
建構函式
XmlDataSource() |
建立 XmlDataSource 類別的新執行個體。 |
屬性
Adapter |
針對控制項取得瀏覽器的特定配置器。 (繼承來源 Control) |
AppRelativeTemplateSourceDirectory |
取得或設定包含了此控制項之 Page 或 UserControl 物件的相對應用程式虛擬目錄。 (繼承來源 Control) |
BindingContainer |
取得包含了此控制項之資料繫結的控制項。 (繼承來源 Control) |
CacheDuration |
取得或設定資料來源控制項快取其所擷取之資料的時間長度 (以秒為單位)。 |
CacheExpirationPolicy |
取得或設定快取期限原則,當與快取期間組合時,用來描述資料來源控制項所使用之快取的快取行為。 |
CacheKeyContext |
取得或設定來自檢視狀態之資料來源控制項的快取索引鍵值,或是將快取索引鍵加入檢視狀態中。 |
CacheKeyDependency |
取得或設定使用者定義的索引鍵相依性,這個索引鍵相依性連結至資料來源控制項所建立的所有資料快取物件。 索引鍵過期時,所有快取物件都會明確過期。 |
ChildControlsCreated |
取得值,指出是否已經建立伺服器控制項的子控制項。 (繼承來源 Control) |
ClientID |
取得 ASP.NET 產生的伺服器控制項識別項。 (繼承來源 HierarchicalDataSourceControl) |
ClientIDMode |
這個屬性不會用於資料來源控制項。 (繼承來源 HierarchicalDataSourceControl) |
ClientIDSeparator |
取得字元值,表示在 ClientID 屬性中所使用的分隔字元。 (繼承來源 Control) |
Context |
取得與目前 Web 要求的伺服器控制項關聯的 HttpContext 物件。 (繼承來源 Control) |
Controls |
取得 ControlCollection 物件,表示 UI 階層架構中指定之伺服器控制項的子控制項。 (繼承來源 HierarchicalDataSourceControl) |
Data |
取得或設定資料來源控制項繫結至的 XML 資料區塊。 |
DataFile |
指定資料來源繫結至的 XML 檔案名稱。 |
DataItemContainer |
如果命名容器實作 IDataItemContainer,則取得命名容器的參考。 (繼承來源 Control) |
DataKeysContainer |
如果命名容器實作 IDataKeysControl,則取得命名容器的參考。 (繼承來源 Control) |
DesignMode |
取得值,指出控制項是否正用於設計介面上。 (繼承來源 Control) |
EnableCaching |
取得或設定值,指出 XmlDataSource 控制項是否啟用了資料快取。 |
EnableTheming |
取得值,指出這個控制項是否支援佈景主題。 (繼承來源 HierarchicalDataSourceControl) |
EnableViewState |
取得或設定值,該值表示伺服器控制項是否對要求的用戶端而言保持其檢視狀態,以及它包含的任何子控制項狀態。 (繼承來源 Control) |
Events |
取得控制項事件處理常式委派 (Delegate) 的清單。 這個屬性是唯讀的。 (繼承來源 Control) |
HasChildViewState |
取得值,指出目前伺服器控制項的子控制項是否有任何已儲存的檢視狀態設定。 (繼承來源 Control) |
ID |
取得或設定指派給伺服器控制項的程式設計識別項。 (繼承來源 Control) |
IdSeparator |
取得用來分隔控制項識別項的字元。 (繼承來源 Control) |
IsChildControlStateCleared |
取得值,指出這個控制項中所包含的控制項是否有控制項狀態。 (繼承來源 Control) |
IsTrackingViewState |
取得值,指出伺服器控制項是否正在儲存檢視狀態的變更。 (繼承來源 Control) |
IsViewStateEnabled |
取得值,指出這個控制項是否已啟用檢視狀態。 (繼承來源 Control) |
LoadViewStateByID |
取得值,指出控制項是否依 ID (而不是索引) 參與載入其檢視狀態。 (繼承來源 Control) |
NamingContainer |
取得伺服器控制項命名容器的參考,其建立唯一命名空間,在具有相同 ID 屬性值的伺服器控制項之間作區別。 (繼承來源 Control) |
Page |
取得含有伺服器控制項的 Page 執行個體的參考。 (繼承來源 Control) |
Parent |
在網頁控制階層架構中取得伺服器控制項之父控制項的參考。 (繼承來源 Control) |
RenderingCompatibility |
取得值,這個值會指定將與呈現 HTML 相容的 ASP.NET 版本。 (繼承來源 Control) |
Site |
當呈現在設計介面上時,取得裝載目前控制項之容器的資訊。 (繼承來源 Control) |
SkinID |
取得或設定要套用至 HierarchicalDataSourceControl 控制項的面板。 (繼承來源 HierarchicalDataSourceControl) |
TemplateControl |
取得或設定包含了此控制項之樣板的參考。 (繼承來源 Control) |
TemplateSourceDirectory |
取得包含目前伺服器控制項的 Page 或 UserControl 的虛擬目錄。 (繼承來源 Control) |
Transform |
取得或設定可延伸樣式表語言 (XSL) 資料的區塊,該資料會定義要在 XmlDataSource 控制項所管理的 XML 資料上執行的 XSLT 轉換。 |
TransformArgumentList |
提供 XSLT 引數的清單,這些引數與 Transform 或 TransformFile 屬性所定義的樣式表搭配使用,以執行 XML 資料的轉換。 |
TransformFile |
指定可延伸樣式表語言 (XSL) 檔案 (.xsl) 的檔名,該檔案會定義要在 XmlDataSource 控制項所管理的 XML 資料上執行的 XSLT 轉換。 |
UniqueID |
取得伺服器控制項唯一的、符合階層架構的識別項。 (繼承來源 Control) |
ValidateRequestMode |
取得或設定值,指出控制項是否對來自瀏覽器的用戶端輸入檢查潛在的危險值。 (繼承來源 Control) |
ViewState |
取得狀態資訊的字典,允許您在相同網頁的多個要求之間,儲存和還原伺服器控制項的檢視狀態。 (繼承來源 Control) |
ViewStateIgnoresCase |
取得值,指出 StateBag 物件是否不區分大小寫。 (繼承來源 Control) |
ViewStateMode |
取得或設定這個控制項的檢視狀態模式。 (繼承來源 Control) |
Visible |
取得或設定值,指出是否視覺化顯示控制項。 (繼承來源 HierarchicalDataSourceControl) |
XPath |
指定要套用至下列 XML 資料的 XPath 運算式:Data 屬性包含的 XML 資料,或 DataFile 屬性所表示之 XML 檔案包含的 XML 資料。 |
方法
事件
DataBinding |
發生於伺服器控制項繫結至資料來源時。 (繼承來源 Control) |
Disposed |
發生於伺服器控制項從記憶體釋放時,這是在要求 ASP.NET 網頁時,伺服器控制項生命週期的最後階段。 (繼承來源 Control) |
Init |
發生於初始化伺服器控制項時,是其生命週期中的第一個步驟。 (繼承來源 Control) |
Load |
發生於載入伺服器控制項至 Page 物件時。 (繼承來源 Control) |
PreRender |
在 Control 物件載入之後但在呈現之前發生。 (繼承來源 Control) |
Transforming |
在 Transform 屬性所定義或 TransformFile 屬性所識別的樣式表套用至 XML 資料之前發生。 |
Unload |
發生於伺服器控制項從記憶體卸載時。 (繼承來源 Control) |
明確介面實作
擴充方法
FindDataSourceControl(Control) |
傳回與指定之控制項的資料控制項相關聯的資料來源。 |
FindFieldTemplate(Control, String) |
傳回在指定之控制項的命名容器中所指定資料行的欄位樣板。 |
FindMetaTable(Control) |
傳回包含資料控制項的中繼資料表物件。 |
GetDefaultValues(IDataSource) |
取得所指定資料來源的預設值集合。 |
GetMetaTable(IDataSource) |
取得所指定資料來源物件中的資料表中繼資料。 |
TryGetMetaTable(IDataSource, MetaTable) |
判斷資料表中繼資料是否可供使用。 |