RadPanelBar use SitemapDatasource with Authorization

Web.sitemap

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode url="Default.aspx" title="Home" description="" roles="user">
    <siteMapNode title="Item1" roles="user">
      <siteMapNode url="Page1.aspx" title="Page1" description="" roles="user"/>
    </siteMapNode>
    <siteMapNode title="Item2" roles="user">
      <siteMapNode url="Page2.aspx" title="Page2" description="test" roles="user" />
      <siteMapNode url="Page3.aspx" title="Page3" description="" roles="admin"/>  
    </siteMapNode>
    <siteMapNode title="Item3" roles="guest">
      <siteMapNode url="Page4.aspx" title="Page4" description="" roles="guest"/>
    </siteMapNode>
  </siteMapNode>
</siteMap>

Web.config

<system.web>
    <siteMap enabled="true"  defaultProvider="AspNetXmlSiteMapProvider">
      <providers>
        <clear />
        <add siteMapFile="Web.sitemap"
             name="AspNetXmlSiteMapProvider"
             type="System.Web.XmlSiteMapProvider" />
      </providers>
    </siteMap>

About.aspx

<%@ Page Title="About Us" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="About.aspx.cs" Inherits="TelerikLearningAsWell.About" %>

<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <h2>
        About
    </h2>
    <p>
        Put content here.
        <telerik:RadScriptManager ID="RadScriptManager1" runat="server">
        </telerik:RadScriptManager>
    </p>

    <asp:SiteMapDataSource ID="SiteMapDataSource1" ShowStartingNode="true" runat="server" SiteMapProvider="AspNetXmlSiteMapProvider"/>
    <asp:Panel ID="Panel1" runat="server">
    </asp:Panel>
    <telerik:RadPanelBar runat="server" ID="RadPanelBar1" 
        onitemdatabound="RadPanelBar1_ItemDataBound">
            <CollapseAnimation Type="None"></CollapseAnimation>
    </telerik:RadPanelBar>
</asp:Content>

About.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace TelerikLearningAsWell
{
    public partial class About : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            RadPanelBar1.DataSource = SiteMapDataSource1;
            RadPanelBar1.DataNavigateUrlField = "url";
            RadPanelBar1.DataTextField = "title";
            RadPanelBar1.DataBind();
        }

        protected void RadPanelBar1_ItemDataBound(object sender, Telerik.Web.UI.RadPanelBarEventArgs e)
        {
            e.Item.ToolTip = "Read more about " + (string)DataBinder.Eval(e.Item.DataItem, "description");
            e.Item.Visible = false;
            //string role = (string)DataBinder.Eval(e.Item.DataItem, "roles");
            //You can have custom: e.Item.NavigateUrl = (e.Item.DataItem as SiteMapNode)["abc"];//abc is custom attribute
            if ((e.Item.DataItem as SiteMapNode).Roles.Count>0
                && (e.Item.DataItem as SiteMapNode).Roles.Contains("user"))
            {
                e.Item.Visible = true;
            }
        }
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值