关于TreeView权限控制显示有关问题,小弟我努力把自己的有关问题表达清楚些

关于TreeView权限控制显示问题,我努力把自己的问题表达清楚些。
环境: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,而不是全部把数据表里面的数据加载到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方法就是对特定数据进行过滤