小类无限的架构问题。。。 我觉得可以利用树的原理,或者XML的层次关系 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用treeview控件!!很好用的!! treeview 是什么东西哦,没看到过拉? 数据结构首先要定好。再用控件实现即可。也可以像latahu(邋遢胡)所述用XML实现。 用xml 每个菜单项的id里面包含上一级的id 就比如01 01_01 01_02 01_02_01 01_02_01_01 01_02_02 01_30然后遍历所有节点 生成菜单 就相当于树型结构只不过用xml更简单 方便 也更灵活些 那在SQLSERVER里表应该怎样建拉? 建立一个XML,XML里的节点是你的类层次关系,通过xmldom去读取,修改xml文件(增加或删除小类)就等于配置类。如果是由客户配置,最好有配置程序,方便用户维护。如果是开发人员配置(比如初始化系统树菜单之类的),可以直接在XML里修改。XML建立起来后,可以将其和treeview建立对应。或者通过XSLT和HTML显示。有关XML和treeview的对应,参考http://expert.csdn.net/Expert/topic/1382/1382059.xml?temp=.5832178是我以前添的代码。有关XSLT和HTML显示XML内容,可以和我联系,内容太多,[email protected] XML-->treeView//增加单个节点 private void Expand(XmlNode aXmlNode,TreeNode aTreeNode){ if (aXmlNode.ChildNodes.Count>0) { for (int i=0; i<aXmlNode.ChildNodes.Count ; i++) { TreeNode treeTmpNode; treeTmpNode=aTreeNode.Nodes.Add(aXmlNode.ChildNodes.Item (i).Name.ToString()); } }} //增加所有分支(递归算法)private void ExpandAll(XmlNode aXmlNode,TreeNode aTreeNode) { Expand(aXmlNode,aTreeNode); //增加子节点 if (aXmlNode.ChildNodes.Count>0) { for (int i=0; i<aXmlNode.ChildNodes.Count ; i++) { ExpandAll(aXmlNode.ChildNodes.Item(i),aTreeNode.Nodes[i] ); } } }//调用//得到Xml的根,作为TreeView的根节点 XmlNode xmlRootNode; TreeNode treeRootNode; xmlRootNode=xmldom.DocumentElement; treeRootNode=treeView1.Nodes.Add(xmlRootNode.Name.ToString()); ExpandAll(xmlRootNode,treeRootNode);你可以写个测试程序试试,我这边没问题. 请教jquery问题 我的网页为什么这么慢?IE浏览器下边状态栏的进度务要走好久,但网页内容好像都已显示完! 100分,求一个js传值问题,在线等 2003转到2005 treeview 的错误问题 后台如何修改前台的图片或者falsh呢 页面传值!大家帮忙了!谢谢! QQ互联本地测试 webform 下载附件问题 使用xmlhttp出现的错误???? 如何从后台调用datagrid自动套用格式中的CssClass?如何在aspx中使用自定义控件? 弄了好长时间,不知道什么原因,火死了,各位帮帮忙,马上结贴,谢谢 怎样在客户端将某一站点设置为可信站点?
再用控件实现即可。也可以像latahu(邋遢胡)所述用XML实现。
01
01_01
01_02
01_02_01
01_02_01_01
01_02_02
01_30然后遍历所有节点 生成菜单 就相当于树型结构
只不过用xml更简单 方便 也更灵活些
有关XML和treeview的对应,参考
http://expert.csdn.net/Expert/topic/1382/1382059.xml?temp=.5832178
是我以前添的代码。
有关XSLT和HTML显示XML内容,可以和我联系,内容太多,[email protected]
//增加单个节点
private void Expand(XmlNode aXmlNode,TreeNode aTreeNode)
{
if (aXmlNode.ChildNodes.Count>0)
{
for (int i=0; i<aXmlNode.ChildNodes.Count ; i++)
{
TreeNode treeTmpNode;
treeTmpNode=aTreeNode.Nodes.Add(aXmlNode.ChildNodes.Item (i).Name.ToString());
}
}
}
//增加所有分支(递归算法)
private void ExpandAll(XmlNode aXmlNode,TreeNode aTreeNode)
{
Expand(aXmlNode,aTreeNode);
//增加子节点
if (aXmlNode.ChildNodes.Count>0)
{
for (int i=0; i<aXmlNode.ChildNodes.Count ; i++)
{
ExpandAll(aXmlNode.ChildNodes.Item(i),aTreeNode.Nodes[i] );
}
}
}//调用
//得到Xml的根,作为TreeView的根节点
XmlNode xmlRootNode;
TreeNode treeRootNode; xmlRootNode=xmldom.DocumentElement;
treeRootNode=treeView1.Nodes.Add(xmlRootNode.Name.ToString());
ExpandAll(xmlRootNode,treeRootNode);你可以写个测试程序试试,我这边没问题.