自定义SiteMapProvider

因为需要从SQL里拉数据过来,所以这里分为两个类,一个用来取数据,一个是provider

 先介绍provider

 

using  System;
using  System.Data;
using  System.Data.SqlClient;
using  System.Configuration;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;
using  Microsoft.Practices.EnterpriseLibrary.Common;
using  Microsoft.Practices.EnterpriseLibrary.Data;
using  System.Security.Permissions;
/// <summary>
/// 以SQL数据源作为参数的provider
/// </summary>

[AspNetHostingPermission(SecurityAction.Demand, Level  =  AspNetHostingPermissionLevel.Minimal)]
public   class  SiteMapProvider : StaticSiteMapProvider
{
    
//根节点
    private SiteMapNode _rootNode=null;
    
//初始化状态
    private bool initialized = false;
    
//默认构造函数
    public SiteMapProvider() { }
    
重载方法
    
自定义属性
    
public void AddChild(SiteMapNode CurrentNode, SiteMapProviderMetaData MetaData)
    
{
        DataView child 
= MetaData.GetChild(CurrentNode);
        
foreach (DataRowView row in child)
        
{
            SiteMapNode temp 
= new SiteMapNode(this, row[0].ToString(), row[2].ToString(), row[1].ToString());
            AddNode(temp, CurrentNode);
            AddChild(temp, MetaData);
        }

    }

    
public void AddRoot(SiteMapProviderMetaData MetaData)
    
{
        DataView root 
= MetaData.GetRoot();
        
foreach (DataRowView row in root)
        
{
            _rootNode 
= new SiteMapNode(this, row[0].ToString(), row[2].ToString(), row[1].ToString());
            AddNode(_rootNode, 
null);
            AddChild(_rootNode, MetaData);
        }

    }

然后是MetaData类

 

using  System;
using  System.Data;
using  System.Data.SqlClient;
using  System.Configuration;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;
using  Microsoft.Practices.EnterpriseLibrary.Common;
using  Microsoft.Practices.EnterpriseLibrary.Data;
using  System.Security.Permissions;

/// <summary>
/// Summary description for SiteMapProviderMetaData
/// </summary>

public   class  SiteMapProviderMetaData
{
    
private Database _db;//数据库操作句柄
    private DataTable _source;//保存SiteMap元数据的表
 public SiteMapProviderMetaData()
 
{
        _db 
= DatabaseFactory.CreateDatabase("Test");//建立连接 
        GetSiteMapMetaData();
 }

    
/// <summary>
    
/// 获得SiteMap的数据源,并给_Source赋值
    
/// </summary>
    
/// <returns>元数据</returns>

    private DataTable GetSiteMapMetaData()
    
{
        DataSet dst 
= null;
        dst 
= _db.ExecuteDataSet(CommandType.Text, "select id,title,url,parentId from navigation");
        
if (dst != null)
        
{
            
this._source = dst.Tables[0];
        }

        
return this._source;
    }

    
GetChild方法
    
GetRoot方法
}


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值