各牛人好,小菜近日遇到一个关于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);//不用继续递归,只需要两级列表
}
}
数据库有两个字段: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);//不用继续递归,只需要两级列表
}
}
把ParentId值相同的剔除掉