各牛人好,小菜近日遇到一个关于treeview过滤的问题终不得解,故特来请教大家。
数据库有两个字段:sheng和shi,输入了三条记录
控件显示如下:
-浙江
 -杭州
-江苏
 -南京
 -扬州
-江苏
 -南京
 -扬州代码:
private void InitTree()
    {
        string constring = System.Configuration.ConfigurationManager.ConnectionStrings["direction"].ConnectionString;        SqlConnection con = new SqlConnection(constring);
        //SqlDataAdapter da = new SqlDataAdapter("select * from TblDirection where sheng in (select distinct sheng from TblDirection ) order by sheng desc", con);
        SqlDataAdapter da = new SqlDataAdapter("SELECT DISTINCT sheng ,shi FROM TblDirection ORDER BY sheng ", con);
        DataSet ds = new DataSet();
        da.Fill(ds, "RootTable");
        con.Close();        DataView dv = new DataView(ds.Tables[0]);        //dv.RowFilter = "ParentID=0";
        foreach (DataRowView drv in dv)
        {
            TreeNode node = new TreeNode();
            node.Text = drv["sheng "].ToString();
            node.Value = drv["shi"].ToString();
            node.Expanded = true;
            TreeView1.Nodes.Add(node);
            //根节点点击失效
            node.SelectAction = TreeNodeSelectAction.None;
            AddReplies(node);        //添加子节点
            //AddReplies(dt, node);
        }
    }
    private DataTable GetTreeViewTable()
    {
        string constring = System.Configuration.ConfigurationManager.ConnectionStrings["direction"].ConnectionString;        SqlConnection con = new SqlConnection(constring);
        
        SqlDataAdapter da = new SqlDataAdapter("select * from TblDirection where sheng in (select distinct sheng from TblDirection ) order by sheng desc", con);        DataTable dt = new DataTable();
        da.Fill(dt);
        con.Close();
        return dt;
    }    private void AddReplies(TreeNode node)
    {
        DataTable dt = GetTreeViewTable();
        DataView dv = new DataView(dt);
        dv.RowFilter = "sheng='" + node.Text + "'";
        foreach (DataRowView row in dv)
        {
            TreeNode replyNode = new TreeNode();
            replyNode.Text = row["sheng"].ToString();
            replyNode.Value = row["ID"].ToString();
            replyNode.Expanded = true;
            node.ChildNodes.Add(replyNode);
            //AddReplies(replyNode);//不用继续递归,只需要两级列表
        }
    }