我想做
根据不同用户登陆,所看到的treeview的节点不同.而且每个节点都是有链接的.
我想法是在数据库建立一个用户与节点对应关系表,然后根据数据库来加载节点信息.
到底是不是这样的呢?各位给点意见.
我看了好多相关的贴子,很多说加载节点,但没有链接的,也没有对应不同ID加载表.请教.!!
我猜想表是不是这样
用户ID 节点名 节点链接地址 ??
然后加载的时候做个添加节点的代码>
各位能不能具体给点代码或构想.
根据不同用户登陆,所看到的treeview的节点不同.而且每个节点都是有链接的.
我想法是在数据库建立一个用户与节点对应关系表,然后根据数据库来加载节点信息.
到底是不是这样的呢?各位给点意见.
我看了好多相关的贴子,很多说加载节点,但没有链接的,也没有对应不同ID加载表.请教.!!
我猜想表是不是这样
用户ID 节点名 节点链接地址 ??
然后加载的时候做个添加节点的代码>
各位能不能具体给点代码或构想.
营销
个人
公司
后台
个人
大客户类似,用户A只能看到营销->个人->公司 看不到后台的,B用户都可以看到.
还有那个链接的地址也是放在数据库中吗?楼上能不能具体点.最好给点实例代码.谢谢
http://community.csdn.net/Expert/topic/4124/4124603.xml?temp=.5802729
load 树时用sql过滤
"客户管理","船舶管理","船舶资料管理","船舶设施摆放",""};
//各个节点的文本属性
private string[] strUrl=new string[] {"","dock.aspx","fwlx.aspx","pjlx.aspx","yggl.aspx","clients.aspx","","",""};
//各个节点所指向的页面的名称
private int[] nodeType=new int[] {1,2,2,2,1,1,1,2,2};//各个节点在树型控件中的层次 private int nodesCount=11;//表示在权限管理界面中该模块名下的子功能数
private string strTarget="zlglRight";//模块中界面的目标位置
private string ClientRights;//客户管理的分权限,2位,第一位表示是否可查看客户,第二位表示是否只能查看本登录者所属客户
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
string strTemp="";
string strMyRights="";
//*************这里各个界面可能不一样,树型控件的名称是特殊的***************
this.TreeView1.Nodes[0].Nodes.Clear();
if(Session["资料管理"]!=null)
{
strTemp=Session["资料管理"].ToString();
}
if(strTemp.Length==nodesCount)
{
//分解权限字符串
//因为11位的权限字符串中,有2个是同一界面下的子权限,没有对应的页面,所以要进行分解,
//同时也要保存好这些子权限,通过Session的方式传递到相应的页面去使用
strMyRights=strTemp.Substring(0,6)+strTemp.Substring(8,3);//界面权限位
ClientRights=strTemp.Substring(6,2);//某一界面下的子权限
this.Session.Add("isAll",ClientRights);//设置Session中的key,保存界面的子权限 //*******************如果没有无对应界面的子权限,则直接执行下面的函数*********************************
IniMenu(strMyRights,strMyNames,strUrl,nodeType,strTarget);//初始化模块菜单,只显示其权限所允许的界面指向节点
}
} /// <summary>
/// 初始化界面,参数依次为:界面权限字符串,界面名称字符数组,界面层次数组,目标地址字符串
/// </summary>
private void IniMenu(string strRights,string[] strNames,string[] mUrl,int[] mLevers,string mTarget)
{
Microsoft.Web.UI.WebControls.TreeNode tnParent=null;
if(strNames.Length==strRights.Length)
{
Microsoft.Web.UI.WebControls.TreeNode tn;
for(int loop=0;loop<strRights.Length;loop++)
{
if(strRights[loop]=='1')
{
tn=new Microsoft.Web.UI.WebControls.TreeNode();
tn.Text=strMyNames[loop];
tn.NavigateUrl=mUrl[loop];
tn.Target=mTarget;
tn.Expandable=Microsoft.Web.UI.WebControls.ExpandableValue.Auto;
tn.Expanded=true;
switch(mLevers[loop])
{
case 1:
tnParent=tn;
this.TreeView1.Nodes[0].Nodes.Add(tn);//使用本届面的树型控件名称,不一定是treeview1
break;
case 2:
if(tnParent!=null)
{
tnParent.Nodes.Add(tn);
}
break;
}
}
else if(strRights[loop]=='0')
{
}
}
}
}