想实现treeview绑定数据库 把表中的数据全都绑定在treeview上
我是这样做的 可是总是报错 using System;
using System.Data;
using System.Configuration;
using System.Collections;
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;
using System.Data.SqlClient;
using UserTest.UserDAL;
public partial class Tree : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.NodeBind();
// dv.RowFilter(); }
}
public void NodeBind()
{
this.tvRight.Nodes[0].ChildNodes.Clear();//清空TreeView中所有节点
this.tvRight.Nodes[0].Expanded = true;//设置根节点为展开形式
this.AddChildNode("NULL ", this.tvRight.Nodes[0]);
}
public void AddChildNode(string sqltj, TreeNode tn)
{
string sql = "SELECT * FROM userInfo";
DataTable dt = UserTestDAL.GetUserInfo(sql); for (int i = 0; i < dt.Rows.Count; i++)//循环DataTable表中子节点记录
{
TreeNode tnchild = new TreeNode();//创建新的子节点
tnchild.Text = dt.Rows[i][1].ToString();//为新建子节点的文本赋值
tnchild.Value = dt.Rows[i][1].ToString();//为新建子节点的Value赋值
tnchild.Expanded = true;//设置为不展开节点
tn.ChildNodes.Add(tnchild);//添加此节点的下一级子节点
//递归调用,一直往下直到添加完这一级下面的所有子节点为止,再转到下一个父节点,并添加所有此父节点下面的所有子节点
//i代表DataTable表中循环记录,0代表取得这个记录的ID值,为下面继续检查这个ID下是否还有子目录
//tnchild递归传递给下一次调用此方法,此时如果这个节点下还有子节点,它便成为父节点,对它下面的子节点进行添加
this.AddChildNode(dt.Rows[i][0].ToString(), tnchild);
}
}}
我是这样做的 可是总是报错 using System;
using System.Data;
using System.Configuration;
using System.Collections;
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;
using System.Data.SqlClient;
using UserTest.UserDAL;
public partial class Tree : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.NodeBind();
// dv.RowFilter(); }
}
public void NodeBind()
{
this.tvRight.Nodes[0].ChildNodes.Clear();//清空TreeView中所有节点
this.tvRight.Nodes[0].Expanded = true;//设置根节点为展开形式
this.AddChildNode("NULL ", this.tvRight.Nodes[0]);
}
public void AddChildNode(string sqltj, TreeNode tn)
{
string sql = "SELECT * FROM userInfo";
DataTable dt = UserTestDAL.GetUserInfo(sql); for (int i = 0; i < dt.Rows.Count; i++)//循环DataTable表中子节点记录
{
TreeNode tnchild = new TreeNode();//创建新的子节点
tnchild.Text = dt.Rows[i][1].ToString();//为新建子节点的文本赋值
tnchild.Value = dt.Rows[i][1].ToString();//为新建子节点的Value赋值
tnchild.Expanded = true;//设置为不展开节点
tn.ChildNodes.Add(tnchild);//添加此节点的下一级子节点
//递归调用,一直往下直到添加完这一级下面的所有子节点为止,再转到下一个父节点,并添加所有此父节点下面的所有子节点
//i代表DataTable表中循环记录,0代表取得这个记录的ID值,为下面继续检查这个ID下是否还有子目录
//tnchild递归传递给下一次调用此方法,此时如果这个节点下还有子节点,它便成为父节点,对它下面的子节点进行添加
this.AddChildNode(dt.Rows[i][0].ToString(), tnchild);
}
}}
解决方案 »
- .net 调用java webservice
- ASP.NET修改网页描述和关键词,标题,该如何从后台操作?
- 【求赐教】关于Repeater的一个小问题。
- 关于模式对话框问题
- 急 页面加载时 根据传过来的ID改变 div的背景色 求大侠帮忙看看怎么弄
- Web Service能否查看调用者发送的是什么信息吗?
- 求救数据录入程序
- asp.net程序员(北京)要求会写博客或论坛
- 问一个傻问题,页面传值问题
- 征求解决方法
- GridView样式的问题,高手来看看,谢谢了。。。。。。。。。。。
- : System.InvalidOperationException: 已有打开的与此连接相关联的 DataReader,必须首先将它关闭。
你这么写那每次查出来的都是一样的数据了``你的sqltj参数都没有用
觉得你这个写法有错误,sqltj接收过来又没用,sql又没过滤条件
我写的无限级Tree,希望对你有帮助 {
//Response.Write("select * from m_functree where funcid in (select funcid from d_role_right where role in (select role from d_user_role where user_code='" + User.Identity.Name.ToString() + "')) order by taxis asc");
//Response.End();
DataTable dt = DB.dt("m_functree", "funcid in (select funcid from d_role_right where role in (select role from d_user_role where user_code='" + User.Identity.Name.ToString() + "')) and enable='1' order by taxis asc", "*");
DataView dv = dt.DefaultView;
for (int i = 0; i < dv.Table.Rows.Count;i++ )
{
if (dv.Table.Rows[i]["sup_funcid"].ToString() == "0")
{
TreeNode tn = new TreeNode();
if (dv.Table.Rows[i]["toolbar_pic"] != null)
{
tn.Text = "<img src='../images/menu/" + dv.Table.Rows[i]["toolbar_pic"].ToString()+ "' border='0'> " + dv.Table.Rows[i]["funcname"].ToString();
}
else
{
tn.Text = dv.Table.Rows[i]["funcname"].ToString();
}
tn.Value = dv.Table.Rows[i]["funcid"].ToString();
tn.NavigateUrl = dv.Table.Rows[i]["link_addr"].ToString();
tn.Target = "mainFrame";
tn.Expanded = false;
Functree.Nodes.Add(tn);
AddReplies(dt, tn);
}
}
}
public void AddReplies(DataTable dt, TreeNode tn)
{
DataView dv = dt.DefaultView;
dv.RowFilter = "sup_funcid='" + tn.Value.ToString() + "'";
for(int i = 0;i<dv.Table.Rows.Count;i++)
{
if (dv.Table.Rows[i]["sup_funcid"].ToString() == tn.Value.ToString())
{
TreeNode rtn = new TreeNode();
rtn.Text = dv.Table.Rows[i]["funcname"].ToString();
rtn.Value = dv.Table.Rows[i]["funcid"].ToString();
rtn.NavigateUrl = dv.Table.Rows[i]["link_addr"].ToString();
rtn.Target = "mainFrame";
rtn.Expanded = false;
tn.ChildNodes.Add(rtn);
AddReplies(dt, rtn);
}
}
}