treeview的绑定通常是用递归的;
而且在表结构里对每条记录标记父节点,和子节点的关系,
就可以进行tree的N层绑定了
而且在表结构里对每条记录标记父节点,和子节点的关系,
就可以进行tree的N层绑定了
解决方案 »
- 非常急,大家帮我看看从数据库读取数据图片信息,为什么不行啊,显示出现错误
- 请问 .gspx 的网页 文件是用什么开发的?
- "2008/04/15"如何获得这样格式的系统时间,很简单的问题,马上结贴!!!
- DIV的绝对位置显示
- 给服务器控件的属性传动态值的问题
- 关于WebService通信
- C# ASP.NET 2.0开发,熟悉 SQL SERVER 2000,网站开发,在上海月薪大概多少?
- 页面中修改全局变量的值
- asp.net 调用 excel.application的问题
- 请大家帮帮我,两天了还没有调试好!
- 怎么样在IFrame里取得里面网页的地址
- 如何把LISTBOX中的所有文件同时上传到服务器上?
GetBigType() 取到数据后循环,循环体里的处理就是
把改条纪录添加到treeview上,针对每一条纪录再取二级 GetMidType()的数据,然后再小循环,再取GetSmallType()的数据
如果还有4级,5级的话,你就要考虑递归了。
还是做不出来可以联系我。[email protected]
private void CreateDataSource(string Parentid)
{
string sqlstr =" select distinct m.id, m.ModuleID,m.modulename,m.menupath,m.parentmoduleid ";
sqlstr +=" from models m, accounts_userroles ur,account_rolepermission rm ";
sqlstr +=" where m.showmenu=1 ";
sqlstr +=" and m.moduleid=rm.moduleid ";
sqlstr +=" and rm.roleid=ur.roleid ";
sqlstr +=" and ur.userid="+this.User.Identity.Name;
sqlstr +=" and parentmoduleid='"+Parentid+"'";
sqlstr +=" order by m.ID ";
DataSet ds=new DataSet ();
ds=Dbc.getBinding (sqlstr,"s");
foreach (DataRow dr in ds.Tables[0].Rows )
{
TreeNode node=new TreeNode ();
node.Text =dr["modulename"].ToString ();
node.ID =dr["moduleid"].ToString ();
node.ImageUrl="../images/sciencesearch.gif";
if (dr["menupath"].ToString () !="")
{
node.NavigateUrl=dr["menupath"].ToString ();
node.Target ="MainFrame";
}
CreateDataSource(dr["moduleid"].ToString (),ref node);
Tv_menu.Nodes .Add(node);
} }
private void CreateDataSource (string Parentid, ref TreeNode Pnode)
{
string sqlstr =" select distinct m.id, m.ModuleID,m.modulename,m.menupath,m.parentmoduleid ";
sqlstr +=" from models m, accounts_userroles ur,account_rolepermission rm ";
sqlstr +=" where m.showmenu=1 ";
sqlstr +=" and m.moduleid=rm.moduleid ";
sqlstr +=" and rm.roleid=ur.roleid ";
sqlstr +=" and ur.userid="+this.User.Identity.Name;
sqlstr +=" and parentmoduleid='"+Parentid+"'";
sqlstr +=" order by m.ID";
DataSet ds=new DataSet ();
ds=Dbc.getBinding (sqlstr,"s");
foreach (DataRow dr in ds.Tables[0].Rows )
{
TreeNode node=new TreeNode ();
node.Text =dr["modulename"].ToString ();
node.ID =dr["moduleid"].ToString ();
if (dr["menupath"].ToString () !="")
{
node.NavigateUrl=dr["menupath"].ToString ();
node.Target ="MainFrame";
}
CreateDataSource(dr["moduleid"].ToString (),ref node);
Pnode.Nodes .Add(node);
}
}
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
InitTreeView();
} private void InitTreeView()
{
DataTable dt = GetBigType();
for (int i = 0; i < dt.Rows.Count; i++)
{
TreeNode node = new TreeNode();
node.Expanded = false;//设置节点是否展开,取反
//look this code run
node.Text = dt.Rows[i]["bigname"].ToString();
node.Value = dt.Rows[i]["TradeBigTypeid"].ToString();
this.MyTreeView.Nodes.Add(node);
DataTable minDt=GetMidType(node.Value); for (int j = 0; j < minDt.Rows.Count ; j++)
{
TreeNode minNode = new TreeNode();
minNode.Text = minDt.Rows[j]["minname"].ToString();
minNode.Value = minDt.Rows[j]["MinTypeid"].ToString();
node.ChildNodes.Add(minNode); DataTable smallDt = GetSmallType(node.Value, minNode.Value); for (int k = 0; k < smallDt.Rows.Count ; k++)
{
TreeNode samllNode = new TreeNode();
samllNode.Text = smallDt.Rows[k]["smallname"].ToString();
samllNode.Value = smallDt.Rows[k]["SmallTypeid"].ToString();
minNode.ChildNodes.Add(samllNode);
} } }
}
public static DataTable GetBigType()
{
DataTable dTable = new DataTable();
dTable.Columns.Add("bigname", typeof(string));
dTable.Columns.Add("TradeBigTypeid", typeof(string));
for (int i = 0; i < 10; i++)
{
DataRow dr = dTable.NewRow();
dr["bigname"] = "bigname" + i.ToString();
dr["TradeBigTypeid"] = "TradeBigTypeid" + i.ToString();
dTable.Rows.Add(dr);
}
return dTable;
} public static DataTable GetMidType(string bigname)
{
DataTable dTable = new DataTable();
dTable.Columns.Add("minname", typeof(string));
dTable.Columns.Add("MinTypeid", typeof(string));
for (int i = 0; i < 10; i++)
{
DataRow dr = dTable.NewRow() ;
dr["minname"] = "minname" + i.ToString();
dr["MinTypeid"] = "MinTypeid" + i.ToString();
dTable.Rows.Add(dr);
}
return dTable;
} public static DataTable GetSmallType(string bigname, string midname)
{
DataTable dTable = new DataTable();
dTable.Columns.Add("smallname", typeof(string));
dTable.Columns.Add("SmallTypeid", typeof(string));
for (int i = 0; i < 10; i++)
{
DataRow dr = dTable.NewRow();
dr["smallname"] = "smallname" + i.ToString();
dr["SmallTypeid"] = "SmallTypeid" + i.ToString();
dTable.Rows.Add(dr);
}
return dTable;
}}
搂主要厚道!http://community.csdn.net/Expert/topic/5770/5770820.xml?temp=.5174829在此也谢谢你帮我解决问题,但是你的意见我用过之后还是不行.
由于我的问题没解决,所以就多发了几遍!如有对你有影响,请说明原因!谢鸟!
你最好也尊重一下大家的劳动。你问问题,大家帮你解决,就算没解决也可以继续讨论。
那个帖子里什么都不说,有出个一样的帖子,你这是对那个帖子里回答你问题人的不尊重。
如果有对你的劳动不尊重的话,在此向你道歉!只是我在那边发的帖子没人反映了,所以就换地方发一下.很少用CSDN,所以里面的规矩不清楚,希望有冒犯的地方大家多多见谅!还希望以后大家能互相帮助!谢谢了!