HOW TO:在非階層式 Web 伺服器控制項中顯示網站導覽資料
更新:2007 年 11 月
網站導覽資料原本就是階層式的,這表示每一個節點都可以包含零個以上的子節點。TreeView 和 Menu 控制項專為使用階層式資料而設計。不過,您可以將網站導覽資料繫結至非階層式控制項,例如 DropDownList、CheckBoxList,以及其他會顯示線性 (或扁平) 格式資料的控制項。
注意事項: |
---|
只有 SiteMapPath 控制項和支援 INavigateUIData 介面的控制項會將網站導覽節點轉譯為連結。 |
範例
下列程式碼範例會使用 DropDownList 控制項來顯示 Web.sitemap 檔案中的網站導覽資料。
用戶端在下拉式清單中選取項目後,瀏覽器會重新導向至選取的頁面。這個動作可藉由呼叫 OnSelectedIndexChanged 事件處理常式的 Redirect 方法來執行。
如果這個程式碼範例放在主版頁面 (Master Page) 中,則使用 SiteMapDataSource 控制項的 StartFromCurrentNode 屬性可確保下拉式清單所顯示的網站導覽,一定是以目前執行的頁面為開頭。
<%@ Page Language="VB" AutoEventWireup="True" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script >
Public Sub _OnSelectedIndexChanged(ByVal Sender As Object, ByVal e As EventArgs)
Response.Redirect(DropDownList1.SelectedItem.Value)
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
<title>Untitled Page</title>
</head>
<body>
<form id="form1" >
<div>
<asp:SiteMapDataSource ID="SiteMapDataSource1" Runat="Server"
StartFromCurrentNode="true"
ShowStartingNode="false" />
<asp:DropDownList ID="DropDownList1" Runat="Server"
DataSourceID="SiteMapDataSource1"
AutoPostBack="True"
DataTextField="Title"
DataValueField="Url"
OnSelectedIndexChanged="_OnSelectedIndexChanged" >
</asp:DropDownList>
</div>
</form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script >
void _OnSelectedIndexChanged(Object sender, EventArgs e)
{
Response.Redirect(DropDownList1.SelectedItem.Value);
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
<title>DropDownList Bound to SiteMapDataSource</title>
</head>
<body>
<form id="form1" >
<div>
<asp:SiteMapDataSource ID="SiteMapDataSource1" Runat="Server"
StartFromCurrentNode="true"
ShowStartingNode="false" />
<asp:DropDownList ID="DropDownList1" Runat="Server"
DataSourceID="SiteMapDataSource1"
AutoPostBack="True"
DataTextField="Title"
DataValueField="Url"
OnSelectedIndexChanged="_OnSelectedIndexChanged" >
</asp:DropDownList>
</div>
</form>
</body>
</html>
如果頁面不包含任何子節點,則下拉式清單會是空的。如果用戶端選取的項目沒有在 Web.sitemap 檔案中設定 URL 屬性,則用戶端會重新導向至應用程式的首頁。
編譯程式碼
這個範例需要有效的 Web.sitemap 檔案,它會參考含有範例程式碼範例的 ASP.NET Web 網頁。如果這個範例程式碼所在的檔案未列在 Web.sitemap 檔案內的任何一個節點中,請從控制項移除下列屬性:
StartFromCurrentNode="true"
請參閱
工作
HOW TO:篩選 SiteMapDataSource Web 伺服器控制項擷取的節點