[英]How to bind SiteMap to a dynamically created TreeView?
如何在运行时将SiteMap绑定到动态创建的TreeView?
有几种方法可以做到这一点。
将PlaceHolder放在页面上:
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
现在创建一个TreeView并分配一个已在页面上的SiteMapDataSource:
//Code Behind
TreeView tv1 = new TreeView();
tv1.DataSourceID = "SiteMapDataSource1";
PlaceHolder1.Controls.Add(tv1);
//aspx
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />
或者您可以通过编程方式分配SiteMap:
// Create an instance of the XmlSiteMapProvider class.
XmlSiteMapProvider testXmlProvider = new XmlSiteMapProvider();
NameValueCollection providerAttributes = new NameValueCollection(1);
providerAttributes.Add("siteMapFile", "Web2.sitemap");
// Initialize the provider with a provider name and file name.
testXmlProvider.Initialize("testProvider", providerAttributes);
// Call the BuildSiteMap to load the site map information into memory.
testXmlProvider.BuildSiteMap();
SiteMapDataSource smd = new SiteMapDataSource();
smd.Provider = testXmlProvider;
TreeView tv2 = new TreeView();
tv2.DataSource = smd;
tv2.DataBind(); //Important or all is blank
PlaceHolder1.Controls.Add(tv2);
以编程方式设置SiteMap还允许您根据业务规则切换文件。
这也可以通过Web.Config完成:
<configuration>
<!-- other configuration sections -->
<system.web>
<!-- other configuration sections -->
<siteMap>
<providers>
<add name="SiteMap1" type="System.Web.XmlSiteMapProvider" siteMapFile="~/Web.sitemap" />
<add name="SiteMap2" type="System.Web.XmlSiteMapProvider" siteMapFile="~/Web2.sitemap" />
</providers>
</siteMap>
</system.web>
</configuration>
然后在你的aspx页面中只需切换提供程序:
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" SiteMapProvider="SiteMap2" />
希望这可以帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.