大家看看,,,要从数据中读出,,,做N级菜单,,要怎么做哦,立刻给分!!!我的信用,大家看着办 RT 做个视图,生成表结构:本身编码,父编码,名称。将数据集放在DataSet 中后,通过DataRow[] dr=Ds.table[0].Rows.seletFiler("父级="父编码);递归过滤;即可得到结构。()具体要怎么做啊,,,大家可以贴出代码么谢谢拉要做项目用,急阿 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 2.0的话直接在使用菜单控件,在循环DataRow集合的时候田间MenuItem对象附加到menu对象上就可。1。1的话,写入一个前台的div对象里面了,然后脚本控制其显示,隐藏,以及位置等。 private void BiudTree() { ZJBF_Exam.BLL.SysManage sm=new ZJBF_Exam.BLL.SysManage(); DataTable dt=sm.GetTreeList("").Tables[0]; this.listTarget.Items.Clear(); //加载树 this.listTarget.Items.Add(new ListItem("根目录","0")); DataRow [] drs = dt.Select("ParentID= " + 0); foreach( DataRow r in drs ) { string nodeid=r["NodeID"].ToString(); string text=r["Text"].ToString(); //string parentid=r["ParentID"].ToString(); //string permissionid=r["PermissionID"].ToString(); text="╋"+text; this.listTarget.Items.Add(new ListItem(text,nodeid)); int sonparentid=int.Parse(nodeid); string blank="├"; BindNode( sonparentid, dt,blank); } this.listTarget.DataBind(); } private void BindNode(int parentid,DataTable dt,string blank) { DataRow [] drs = dt.Select("ParentID= " + parentid ); foreach( DataRow r in drs ) { string nodeid=r["NodeID"].ToString(); string text=r["Text"].ToString(); //string permissionid=r["PermissionID"].ToString(); text=blank+"『"+text+"』"; this.listTarget.Items.Add(new ListItem(text,nodeid)); int sonparentid=int.Parse(nodeid); string blank2=blank+"─"; BindNode( sonparentid, dt,blank2); } } ASP。NET 2.0 新技术讨论群:20810637(群主) 加一个DataRelation约束一下就可以了 private void Page_Load(object sender, EventArgs e){ if (!this.IsPostBack) { this.buildTree(); }}private void buildTree(){ DataSet ds = new DataSet(); System.Data.OleDb.OleDbConnection dbCon = new System.Data.OleDb.OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + this.Server.MapPath("data/siteMap.mdb")); try { dbCon.Open(); } catch (Exception exc) { this.Response.Write(exc.Message); } System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM SiteMap", dbCon); adapter.Fill(ds); ds.Relations.Add("NodeRelation", ds.Tables[0].Columns["NodeId"], ds.Tables[0].Columns["ParentNodeId"]); foreach (DataRow dbRow in ds.Tables[0].Rows) { if (dbRow.IsNull("ParentNodeId")) { TreeViewNode newNode ; newNode = CreateNode(dbRow["Text"].ToString(), dbRow["ImageUrl"].ToString(), true); TreeView1.Nodes.Add(newNode); PopulateSubTree(dbRow, newNode); } }}private void PopulateSubTree(DataRow dbRow, TreeViewNode node){ TreeViewNode childNode; foreach (DataRow childRow in dbRow.GetChildRows("NodeRelation")) { childNode = new ComponentArt.Web.UI.TreeViewNode(); childNode = this.CreateNode(childRow["Text"].ToString(), childRow["ImageUrl"].ToString(), true); node.Nodes.Add(childNode); this.PopulateSubTree(childRow, childNode); }}private TreeViewNode CreateNode(string text, string imageurl, bool expanded){ TreeViewNode node = new TreeViewNode(); node.Text = text; node.ImageUrl = imageurl; node.Expanded = expanded; return node;} //生成数据文件DataSet objDataSet = GetDataSet();if(!IsPostBack){ initDirectoryNodes(TreeView1.Nodes,0);} //生成所有的目录结点 private void initDirectoryNodes(TreeNodeCollection node,int parentId) { TreeNode newNode; string option = "parentId='" + parentId + "'"; DataRow [] objRow = objDataSet.Tables["directoryInfo"].Select(option); foreach(DataRow row in objRow) { newNode = new TreeNode(); newNode.ID= row["directoryId"].ToString().Trim(); newNode.Text = row["directoryName"].ToString().Trim(); newNode.ImageUrl = "images/folder.gif"; newNode.ExpandedImageUrl = "images/folderopen.gif"; node.Add(newNode); initFileNodes(newNode.Nodes,Convert.ToInt32(newNode.ID)); initDirectoryNodes(newNode.Nodes,Convert.ToInt32(newNode.ID)); } }从前写的一个递归目录,希望对你有用 http://www.codeproject.com/cs/miscctrl/treeviewtutorial.asphttp://www.codeproject.com/cs/miscctrl/DataBoundTreeView.asp http://www.codeproject.com/info/search.asp?cats=3&searchkw=treeview&Submit1=Search&author=&sd=15+Nov+1999&ed=27+Aug+2006直接告诉你代码,还不如告诉你找到代码的方法,以后有类似问题就多去这里找找 this.menuBind(this.menu.Items, "000000", ds);private void menuBind(MenuItemCollection micCurrent, string parentCode, DataSet ds) { DataView dvw = new DataView(); MenuItem miTemp; //string tempCode; dvw.Table = ds.Tables[0]; dvw.RowFilter = "parentCode='" + parentCode + "'"; foreach (DataRowView drv in dvw) { miTemp = new MenuItem(); miTemp.Value = drv["code"].ToString(); miTemp.Text = drv["name"].ToString(); miTemp.NavigateUrl = drv["linkUrl"].ToString(); micCurrent.Add(miTemp); //递归调用 menuBind(miTemp.ChildItems, miTemp.Value, ds); } } 关于VS2010 和 Sql2008 写程序时出的小问题 程序执行的快还是访问数据库连接快? session超时应该怎么写可以减少一些代码? 请教 BearRui (私聊发不出去) 顶级散分,多年开发技术文档共享,来者有分 群发邮件的问题 在asp.net中操作xml出现读取访问被拒绝的问题 帮我看看我的问题,分不多。 页面用到FCKeditorV2, 可post后,获取不了fckeditor的值 请帮忙,我配置freetextbox时出问题 求助:配置错误 这段JScript的问题在哪?
1。1的话,写入一个前台的div对象里面了,然后脚本控制其显示,隐藏,以及位置等。
{
ZJBF_Exam.BLL.SysManage sm=new ZJBF_Exam.BLL.SysManage();
DataTable dt=sm.GetTreeList("").Tables[0];
this.listTarget.Items.Clear();
//加载树
this.listTarget.Items.Add(new ListItem("根目录","0"));
DataRow [] drs = dt.Select("ParentID= " + 0);
foreach( DataRow r in drs )
{
string nodeid=r["NodeID"].ToString();
string text=r["Text"].ToString();
//string parentid=r["ParentID"].ToString();
//string permissionid=r["PermissionID"].ToString();
text="╋"+text;
this.listTarget.Items.Add(new ListItem(text,nodeid));
int sonparentid=int.Parse(nodeid);
string blank="├";
BindNode( sonparentid, dt,blank); }
this.listTarget.DataBind(); }
private void BindNode(int parentid,DataTable dt,string blank)
{
DataRow [] drs = dt.Select("ParentID= " + parentid );
foreach( DataRow r in drs )
{
string nodeid=r["NodeID"].ToString();
string text=r["Text"].ToString();
//string permissionid=r["PermissionID"].ToString();
text=blank+"『"+text+"』";
this.listTarget.Items.Add(new ListItem(text,nodeid));
int sonparentid=int.Parse(nodeid);
string blank2=blank+"─";
BindNode( sonparentid, dt,blank2);
}
}
{
if (!this.IsPostBack)
{
this.buildTree();
}
}private void buildTree()
{
DataSet ds = new DataSet();
System.Data.OleDb.OleDbConnection dbCon = new System.Data.OleDb.OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + this.Server.MapPath("data/siteMap.mdb"));
try
{
dbCon.Open();
}
catch (Exception exc)
{
this.Response.Write(exc.Message);
}
System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM SiteMap", dbCon);
adapter.Fill(ds);
ds.Relations.Add("NodeRelation", ds.Tables[0].Columns["NodeId"], ds.Tables[0].Columns["ParentNodeId"]);
foreach (DataRow dbRow in ds.Tables[0].Rows)
{
if (dbRow.IsNull("ParentNodeId"))
{
TreeViewNode newNode ;
newNode = CreateNode(dbRow["Text"].ToString(), dbRow["ImageUrl"].ToString(), true);
TreeView1.Nodes.Add(newNode);
PopulateSubTree(dbRow, newNode);
}
}
}private void PopulateSubTree(DataRow dbRow, TreeViewNode node)
{
TreeViewNode childNode;
foreach (DataRow childRow in dbRow.GetChildRows("NodeRelation"))
{
childNode = new ComponentArt.Web.UI.TreeViewNode();
childNode = this.CreateNode(childRow["Text"].ToString(), childRow["ImageUrl"].ToString(), true);
node.Nodes.Add(childNode);
this.PopulateSubTree(childRow, childNode);
}
}private TreeViewNode CreateNode(string text, string imageurl, bool expanded)
{
TreeViewNode node = new TreeViewNode();
node.Text = text;
node.ImageUrl = imageurl;
node.Expanded = expanded;
return node;
}
DataSet objDataSet = GetDataSet();
if(!IsPostBack)
{
initDirectoryNodes(TreeView1.Nodes,0);
}
//生成所有的目录结点
private void initDirectoryNodes(TreeNodeCollection node,int parentId)
{
TreeNode newNode;
string option = "parentId='" + parentId + "'";
DataRow [] objRow = objDataSet.Tables["directoryInfo"].Select(option);
foreach(DataRow row in objRow)
{
newNode = new TreeNode();
newNode.ID= row["directoryId"].ToString().Trim();
newNode.Text = row["directoryName"].ToString().Trim();
newNode.ImageUrl = "images/folder.gif";
newNode.ExpandedImageUrl = "images/folderopen.gif";
node.Add(newNode);
initFileNodes(newNode.Nodes,Convert.ToInt32(newNode.ID));
initDirectoryNodes(newNode.Nodes,Convert.ToInt32(newNode.ID));
}
}
从前写的一个递归目录,希望对你有用
http://www.codeproject.com/cs/miscctrl/DataBoundTreeView.asp
private void menuBind(MenuItemCollection micCurrent, string parentCode, DataSet ds)
{
DataView dvw = new DataView();
MenuItem miTemp; //string tempCode;
dvw.Table = ds.Tables[0];
dvw.RowFilter = "parentCode='" + parentCode + "'";
foreach (DataRowView drv in dvw)
{
miTemp = new MenuItem();
miTemp.Value = drv["code"].ToString();
miTemp.Text = drv["name"].ToString();
miTemp.NavigateUrl = drv["linkUrl"].ToString();
micCurrent.Add(miTemp);
//递归调用
menuBind(miTemp.ChildItems, miTemp.Value, ds);
}
}