- 爱易网页
-
ASP.NET教程
- 急从数据库中读取数据,其后用for循环输出Js到前台页面形成一个类似树形结构的,但是为什么在第三级就只能有一条数据
日期:2014-05-17 浏览次数:20440 次
急!!!!从数据库中读取数据,然后用for循环输出Js到前台页面形成一个类似树形结构的,但是为什么在第三级就只能有一条数据?
这是代码...
private string InitFolder()
{
string _Html = "var rootNode = new TreeNode(0, \"root\");";
DataSet ds = folderBLL.GetList(" status=1 ");
if (ds != null)
{
DataTable dt = ds.Tables[0];
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i]["parentFolderId"].ToString() == "-1")
{
_Html += string.Format("folder{0}=new TreeNode({0},'{1}');", dt.Rows[i]["folderid"].ToString(), dt.Rows[i]["folderName"].ToString());
_Html += string.Format("rootNode.addSubNode(folder{0});", dt.Rows[i]["FolderId"].ToString());
for (int j = 0; j < dt.Rows.Count; j++)
{
string tempParentId = dt.Rows[i]["folderId"].ToString();
if (dt.Rows[j]["parentFolderId"].ToString() == tempParentId)
{
_Html += setSubFolder(tempParentId, dt.Rows[j]["folderid"].ToString(), dt.Rows[j]["folderName"].ToString());
string temp2 = dt.Rows[j]["FolderId"].ToString();
for (int k = 0; k < dt.Rows.Count; k++)
{
if (dt.Rows[k]["parentFolderId"].ToString() == temp2)
{
_Html += setSubFolder(temp2, dt.Rows[k]["folderid"].ToString(), dt.Rows[k]["folderName"].ToString());
string temp3 = dt.Rows[k]["FolderId"].ToString();
k = 0;
continue;
}
}
}
}
}
}
}
return _Html;
}
------解决方案--------------------
1、treeview控件、
2、绑定数据、多级菜单 肯定要选择递归了! 方便、实用
/// <summary>
/// 递归添加节点
/// </summary>
/// <param name="id"></param>
/// <param name="parentnode"></param>
private void AddNode(int id, TreeNode parentnode)
{
string sql = "select * from Subject";//sql 语句
DataTable table = DAL.DBHelper.GetTable(sql);//获取数据
DataView view = new DataView(table);//把表数据添加到自定义视图中
view.RowFilter = "ParentId=" + id;//设置视图查询条件
foreach (DataRowView row in view)//遍历视图中数据
{
TreeNode node = new TreeNode();//实例化树节点
node.Expanded = false;
node.Text = row[1].ToString();
node.Value = row[0].ToString();
int newid = Convert.ToInt32(row[0]);
if (parentnode != null)
{
//node.Expanded = false;
parentnode.ChildNodes.Add(node);
AddNode(newid, node);//递归查找节点