日期:2014-05-20  浏览次数:20462 次

栏目菜单管理问题?(在线等)
栏目预览,以表格的形式呈现,不过也可以用DataGrid呈现
http://hiphotos.baidu.com/92fun/pic/item/e51bc9335de77941ac4b5f55.jpg

数据库的表结构
http://hiphotos.baidu.com/92fun/pic/item/7e8fd89547310549d0135e55.jpg

下拉框呈现形式
http://hiphotos.baidu.com/92fun/pic/item/6f29c1433a39791172f05d55.jpg

不知道那位高手能做出这样的效果出来

想了都快一个月了,还是没有找到合适的算法。。。

------解决方案--------------------
/// <summary>
/// 绑定 DropDownList
/// </summary>
/// <param name= "DDl "> DropDownList </param>
/// <param name= "parentid "> 父类 </param>
/// <param name= "SortTable "> 表 </param>
/// <param name= "me_ver "> 版本 </param>
public void bindGrop(DropDownList DDl, string parentid, string SortTable, string me_ver)
{
if (me_ver == " ") me_ver = "cn ";
DataTable dt = GetDataSet( "SELECT * FROM " + SortTable + " WHERE me_ver= ' " + me_ver + " ' ORDER BY InfoClsIndex ", "sort ").Tables[ "sort "];
if (dt.Rows.Count > 0)
{
foreach (DataRow row in dt.Rows)
{
if (row[ "parentid "].ToString().Trim() == "0 ")
{
DDl.Items.Add(new ListItem( "⊙ " + row[ "sortname "].ToString(), row[ "id "].ToString()));
bindDropChildItem(DDl, dt, row[ "id "].ToString(), 1);
}
}
}
DDl.Items.Insert(0, new ListItem( "--请选择-- ", "0 "));
DDl.Items.FindByValue(parentid).Selected = true;
}
------解决方案--------------------
针对此做一个SiteMapProvider,然后TreeView、Menu之类的都能用了。第三个要求就要你自己写一个控件了。
------解决方案--------------------
数据库设计不太合理把
------解决方案--------------------
我也做过这类的问题,数据库基本也是这样设计的,然后参考了邹建的http://blog.csdn.net/zjcxc/archive/2003/12/29/20073.aspx

利用了第一个函数,进行--分级显示--纵向
select * from tb order by dbo.f_getmergid(id)
go

读出的时候再判断一下depth
用for循环输出空格.