关于TreeView权限控制显示有关问题,小弟我努力把自己的有关问题表达清楚些
关于TreeView权限控制显示问题,我努力把自己的问题表达清楚些。
环境:VS2010,SQL2008,C#.net
在开发中我用无限级递归的方法,将数据库的数据递归到Treeview树上代码如下:
生成如下图:

我要的效果是,加载后去掉红色框中的数据(当然红色框中的数据是查询其他表的条件来判断是否要加载):
我如何在递归绑定的时候,按条件加载数据到Treeview,而不是全部把数据表里面的数据加载到Treeview,如下图红色框中的数据不加载:
我不知道自己的思路对不对,试了很多种办法,但最终自己还是解决不了。请高手们帮帮忙,看怎么解决。
------解决方案--------------------
写个存储过程去处理吧,不显示出来的数据先判断下取出对应的ID号再去过滤ManagerCD表
------解决方案--------------------
既然红色框中的数据是查询其他表的条件来判断是否要加载,那么可以尝试下在sql时候就把这部分数据排除
------解决方案--------------------
绑定数据的时候过滤filter
------解决方案--------------------
Filter方法就是对特定数据进行过滤
环境:VS2010,SQL2008,C#.net
在开发中我用无限级递归的方法,将数据库的数据递归到Treeview树上代码如下:
ds = new DataSet();
string sqlstr = "select * from ManagerCD order by CDManager";
SqlDataAdapter cmdSelect = new SqlDataAdapter(sqlstr, connn);
cmdSelect.Fill(ds, "Tree");
DataView dv = new DataView();
TreeNode tmpNode;
dv.Table = ds.Tables["Tree"];
dv.RowFilter = "layer=" + "'" + parentID + "'";//过滤视图中数据
foreach (DataRowView drv in dv)
{
tmpNode = new TreeNode();
tmpNode.Value = drv["ID"].ToString().Trim();
tmpNode.Text = drv["CDManager"].ToString().Trim();
tmpNode.ToolTip = drv["adress"].ToString().Trim();//存放地址
Nds.Add(tmpNode);
this.InitTree(tmpNode.ChildNodes, tmpNode.Value);//递归自己
}
生成如下图:
我要的效果是,加载后去掉红色框中的数据(当然红色框中的数据是查询其他表的条件来判断是否要加载):
我如何在递归绑定的时候,按条件加载数据到Treeview,而不是全部把数据表里面的数据加载到Treeview,如下图红色框中的数据不加载:
我不知道自己的思路对不对,试了很多种办法,但最终自己还是解决不了。请高手们帮帮忙,看怎么解决。
------解决方案--------------------
写个存储过程去处理吧,不显示出来的数据先判断下取出对应的ID号再去过滤ManagerCD表
------解决方案--------------------
既然红色框中的数据是查询其他表的条件来判断是否要加载,那么可以尝试下在sql时候就把这部分数据排除
------解决方案--------------------
绑定数据的时候过滤filter
------解决方案--------------------
string id = drv["CDManager"].ToString().Trim();
if(Filter(id))
{
continue;
}
tmpNode = new TreeNode();
tmpNode.Value = drv["ID"].ToString().Trim();
tmpNode.Text = id ;
tmpNode.ToolTip = drv["adress"].ToString().Trim();//存放地址
Nds.Add(tmpNode);
this.InitTree(tmpNode.ChildNodes, tmpNode.Value);//递归自己
Filter方法就是对特定数据进行过滤