类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
设计一个树形结构表
ID Fid classname
然后怎么排序,
像这种效果 http://www.01wt.com/class.gif
网友回答:
有个OrderID,ParentID,每个ParentID下的Item是根据OrderID来判断的,刚开始OrderID=ClassID。
恐怕,要用递归之类的吧,我也想知道。
微软有个treeview就是做树形菜单的,你上google上搜索一下
你用IE Web Controls的TreeView,再把数据源排序,绑定到TreeView 控件上.
可以啊,数据库里多几个字段,用来判断处于第几个和是否结尾就可以了
我也碰到过这个问题,我使用了后台递归,输出到前台的笨方法,而我研究dvnews应该是datagrid嵌套的方法。尤其是上升、下降功能也无法实现。希望能够有一个好的方式实现这种效果。
see:
----------------------------------
private void button3_Click(object sender, System.EventArgs e)
{
SqlConnection cnn=new SqlConnection("server=BEAR;user id=sa;initial catalog=123;persist security info=True;");
cnn.Open();
TreeNode node=new TreeNode();
treeView1.Nodes.Add(ShowAllTree(0,cnn,node)); //根节是以PID为0标志的
cnn.Close();
}
private TreeNode ShowAllTree(int id,SqlConnection cnn,TreeNode node)
{
string sqlSelect = "SELECT id,pid FROM [1] where pid ="+id+"";
SqlDataAdapter da = new SqlDataAdapter(sqlSelect,cnn);
DataTable dt=new DataTable();
da.Fill(dt);
for(int i=0;i<dt.Rows.Count;i++)
{
TreeNode newNode=new TreeNode(dt.Rows[i][0].ToString());
node.Nodes.Add(newNode);
int newID = (int)dt.Rows[i][0];;
ShowAllTree(newID,cnn,newNode); //递归调用,将子结点ID当做下一当前结点ID
}
dt.Dispose();
da.Dispose();
return node;
}
测试数据表1:
id pid
1 0
2 1
3 2
4 3
5 1
6 0
7 0
8 6
看不到你所要的效果了,不过使用微软的treeview控件应该可以实现,排序你可以在sql语句里面写好,或者是使用DataTable里的排序。