表结构如下
ID Name
001 国内新闻
002 国外新闻
001001 国内经济
001001001 国内股票
002001 国外经济如何实现?大家帮忙看看?
ID Name
001 国内新闻
002 国外新闻
001001 国内经济
001001001 国内股票
002001 国外经济如何实现?大家帮忙看看?
解决方案 »
- execl文件数据导入数据库表中,报找不到可安装的 ISAM。错误
- DataSet排序问题
- Request.Form能取到不是以服务端形式提交过来的表单么
- asp.net Development Server和浏览器端口不一致,怎么办阿
- DataGridView的资料绑定的日期显示问题
- 网站编译后的错误!!!急...
- 十一大家准备干什么去啊?没有打算的请进~~~
- 为什么我无法建立asp.net工程啊?
- using System.Web.Mail;如何来发邮件啊?
- 怎么得到与另一台计算机网络连接的速度?
- 给个ASP.net 2.0的例子(有点规模的)
- 哪位大虾有李天平写的《亮剑.NET:.NET深入体验与实战精要》电子版啊
INSERT INTO @tb
select '001',N'国内新闻' union
select '002',N'国外新闻' union
select '001001',N'国内经济' union
select '001001001',N'国内股票' union
select '002001',N'国外经济'SELECT * FROM @tbSELECT id,[name],SUBSTRING(id,1,LEN(id)-3) AS parentid INTO #tb FROM @tb
SELECT * FROM #tb
DROP TABLE #tb
id 和pid
1 0
2 1
3 2
第二级长度为6
3*N
先求数据库里最长的是多少(X),这样后循环(X/3)次 构建你要的数据
1级为 len = 3 每个一级的下层len = 6 且字符为 like 父级+'%'
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
AddTree();
}
} protected void AddTree()
{
DbHelperClass dbStr=new DbHelperClass ();
string sql = "select ID,Name,substring(ID,0,len(ID)-2) as prid from [news] ";
ds=dbStr.QuerySqlStrDS(sql);
DataList1.DataSource = ds.Tables["ds"].DefaultView;
DataList1.DataBind();
BindTree("001", (TreeNode)null);
BindTree("002", (TreeNode)null);
} protected void BindTree(String Perentid, TreeNode tnode)
{
TreeNode tn1 = new TreeNode();
DataView treedv = new DataView(ds.Tables[0]);
treedv.RowFilter = "[prid]=" +Perentid.ToString();
foreach (DataRowView ROW in treedv)
{
if (tnode == null)
{
tn1.Text = ROW["Name"].ToString();
tn1.Value = ROW["ID"].ToString();
TreeView1.Nodes.Add(tn1);
if (ROW["prid"] == null)
{
BindTree("001", tn1);
}
BindTree("00" + (Convert.ToInt32(ROW["prid"]) + 1).ToString(), tn1);
Response.Write("00" + (Convert.ToInt32(ROW["prid"]) + 1).ToString());
}
else
{
TreeNode tn2 = new TreeNode();
tn2.Text = ROW["Name"].ToString();
tn2.Value = ROW["ID"].ToString();
tnode.ChildNodes.Add(tn2);
if (ROW["prid"] == null)
{
BindTree("001", tn1);
}
BindTree(ROW["ID"].ToString(), tn2);
Response.Write("00" + (Convert.ToInt32(ROW["prid"]) + 1).ToString());
} }
}在sql查询器里没问题
与程序无关表设计为:ID PID Name
主键ID 父级ID 名称在后台多循环递归
放父级为空就是最大级
以及类推
父级的数据也就是ID的字段