数据库中的数据
ID 为自动增长 NAME 为名称 P_ID 为父类ID
ID NAME P_ID
1 数码产品 0
2 相机 1
3 MP3/MP4 1
4 索尼 3
5 OPPO 3
6 电脑整机 0
7 主板 6
8 显示器 6
9 华硕 7
… …… ……
---------------------以上是数据库中的数据
要在页面中显示如下效果数码产品
相机
MP3/MP4
索尼
OPPO
电脑整机
主板
华硕
显示器
如果还有下级则继续显示(递归算法)
最好写下代码 谢谢!!
ID 为自动增长 NAME 为名称 P_ID 为父类ID
ID NAME P_ID
1 数码产品 0
2 相机 1
3 MP3/MP4 1
4 索尼 3
5 OPPO 3
6 电脑整机 0
7 主板 6
8 显示器 6
9 华硕 7
… …… ……
---------------------以上是数据库中的数据
要在页面中显示如下效果数码产品
相机
MP3/MP4
索尼
OPPO
电脑整机
主板
华硕
显示器
如果还有下级则继续显示(递归算法)
最好写下代码 谢谢!!
解决方案 »
- 获取Id错误吗?ViewState["aid"].ToString())
- ajax.dll如何返回一个实体对象?例如自建的student对象?
- 哪位有vb.net写的投票系统,和Blog,开源的!
- 晚上没睡觉。帮我一把。为什么check="False"出来的确是全选中的。在线急等
- 水晶报表中“详细资料”栏里的列是否只能在设计时生成,能否在运行时用程序动态生成?
- 向数据库插入数据的错误
- 如果后台数据库表被其他程序更新了,如何实现datagrid显示内容跟着更新?
- 不用timer控件,如何实现每隔一段时间执行某个操作,在线等
- 向各位请教JavaScript中定义扩展对象类型的问题
- 关于dropdownlist的认识
- ajax问题xmlHttp.status
- C# 讀取excel
写得不清楚吗? 就下面这个效果哈!
数码产品
相机
MP3/MP4
索尼
OPPO
电脑整机
主板
华硕
显示器
相机
MP3/MP4
索尼
OPPO
电脑整机
主板
华硕
显示器
ID 为自动增长 NAME 为名称 P_ID 为父类ID
ID NAME P_ID
1 数码产品 0
2 相机 1
3 MP3/MP4 1
4 索尼 3
5 OPPO 3
6 电脑整机 0
7 主板 6
8 显示器 6
9 华硕 7
… …… ……
---------------------以上是数据库中的数据 要在页面中显示如下效果 数码产品 -------ID 为1
相机 -------ID 为2 父类ID为1
MP3/MP4 -------ID 为3 父类ID为1
索尼 -------ID 为4 父类ID为2
OPPO -------ID 为5 父类ID为2
电脑整机 -------ID 为6 父类ID为0
主板 -------ID 为7 父类ID为6
华硕 -------ID 为9 父类ID为7
显示器 -------ID 为8 父类ID为6
如果还有下级则继续显示(递归算法)
最好写下代码 谢谢!! 可能刚刚没说清楚 现在清楚了吧
OPPO -------ID 为5 父类ID为2
這個是否應該在相機後面
{
DataRow[] dr;
if (ItemId == 0)
dr = ds.Tables[0].Select("nodeid=0");
else
dr = ds.Tables[0].Select("nodeid=" + ItemId);
foreach (DataRow thisRow in dr)
{
TreeNode Node = new TreeNode();
Node.Text = thisRow["menuName"].ToString();
Node.Value = thisRow["ACALmenuID"].ToString();
if (pNode == null)
{
Node.Expanded = false;
Node.ShowCheckBox = true;
TreeView1.Nodes.Add(Node);
TreeViews(int.Parse(thisRow["ACALmenuID"].ToString()), Node);
}
else
{
Node.Expanded = false;
Node.ShowCheckBox = true;
pNode.ChildNodes.Add(Node);
TreeViews(int.Parse(thisRow["ACALmenuID"].ToString()), Node);
}
}
}
看下对你有帮助没吧。
sql="select * from table where P_ID=0"
..
while dr.read
dim treestart as treenode
treestart.text=dr("name")
mytreeview.nodes.add(treestart)
dim sql2..
sql2="select * from tabel where P_ID=" & dr("ID")
while dr2.read
dim treenode2 as treenode
treenode2.text=dr("name")
treestart.ChildNodes.add(treenode2)
如有多层,则继续..
end while
end while
提供一个思路,代码自己补齐.
private void initTree()
{
DataRow[] drs = dt.Select("ParentID=2", "ID asc");
for (int i = 0; i < drs.Length; i++)
{
TreeNode tn = new TreeNode(drs[i][1].ToString());
tn.SelectAction = TreeNodeSelectAction.Select;
tn.Expanded = false;
this.TreeView1.Nodes.Add(tn);
LoadTree(tn, Convert.ToInt32(drs[i][0]));
}
}
//绑定除父节点以外所有节点
private void LoadTree(TreeNode tn, int parentid)
{
DataRow[] drs = dt.Select("ParentID=" + parentid, "ID asc");
for (int i = 0; i < drs.Length; i++)
{
TreeNode child = new TreeNode(drs[i][1].ToString());
tn.SelectAction = TreeNodeSelectAction.Select;
child.Expanded = false;
tn.ChildNodes.Add(child);
LoadTree(child, Convert.ToInt32(drs[i][0]));
}
}
DECLARE @t TABLE(ID char(3),PID char(3),Name nvarchar(10))
INSERT @t SELECT '001',NULL ,'山东省'
UNION ALL SELECT '002','001','烟台市'
UNION ALL SELECT '004','002','招远市'
UNION ALL SELECT '003','001','青岛市'
UNION ALL SELECT '005',NULL ,'四会市'
UNION ALL SELECT '006','005','清远市'
UNION ALL SELECT '007','006','小分市'--深度排序显示处理
--生成每个节点的编码累计(相同当单编号法的编码)
DECLARE @t_Level TABLE(ID char(3),Level int,Sort varchar(8000))
DECLARE @Level int
SET @Level=0
INSERT @t_Level SELECT ID,@Level,ID
FROM @t
WHERE PID IS NULL
WHILE @@ROWCOUNT>0
BEGIN
SET @Level=@Level+1
INSERT @t_Level SELECT a.ID,@Level,b.Sort+a.ID
FROM @t a,@t_Level b
WHERE a.PID=b.ID
AND b.Level=@Level-1
END--显示结果
SELECT SPACE(b.Level*2)+'|--'+a.Name
FROM @t a,@t_Level b
WHERE a.ID=b.ID
ORDER BY b.Sort
/*--结果
|--山东省
|--烟台市
|--招远市
|--青岛市
|--四会市
|--清远市
|--小分市
--*/
private void Page_Load(object sender, System.EventArgs e)
{
CreateDataSet();
InitTree(TreeView1.Nodes,"0");
} private DataSet CreateDataSet()
{
SqlConnection myConnection = new SqlConnection("server=20-1555\\SQLEXPRESS;database=Test;pwd=123456;uid=sa;");
SqlDataAdapter myDA = new SqlDataAdapter("select * from TreeView",myConnection);
myDS = new DataSet();
myDA.Fill(myDS,"tree");
return myDS;
} private void InitTree(TreeNodeCollection Nds,string p_ID)
{
DataView myDV = new DataView();
TreeNode tmpNd;
string intId;
myDV.Table = myDS.Tables["tree"];
myDV.RowFilter="P_ID=" + P_ID + "";
foreach(DataRowView drv in myDV)
{
tmpNd = new TreeNode();
tmpNd.Value = drv["TreeId"].ToString();
tmpNd.Text = drv["TreeName"].ToString();
tmpNd.NavigateUrl = drv["URL"].ToString();
Nds.Add(tmpNd);
intId = drv["P_ID"].ToString();
InitTree(tmpNd.ChildNodes, tmpNd.Value);
}
}