加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 如何将SiteMap绑定到动态创建的TreeView?

发布时间:2020-12-16 03:36:22 所属栏目:asp.Net 来源:网络整理
导读:如何在运行时将SiteMap绑定到动态创建的TreeView? 解决方法 有几种方法可以做到这一点. 将PlaceHolder放在页面上: asp:PlaceHolder ID="PlaceHolder1" runat="server"/asp:PlaceHolder 现在创建一个TreeView并分配一个已在页面上的SiteMapDataSource: //C
如何在运行时将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"  />

希望这可以帮助

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读