各位好,我在用C#进行网页编程时遇到一个问题,在使用treeview控件从数据库中取权限按照树形展开时无法显示控件,代码如下(代码在运行过程中没有报错,只是运行进入页面后treeview控件看不到),请各位高手帮忙看看是什么原因,由于小弟是最近刚接触C#,所以请各位高手尽可能说的详细点,多谢
using System;
using System.Data;
using System.Data.SqlClient;
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;public partial class _Default : System.Web.UI.Page
{
public SqlConnection myconn = new SqlConnection();
DataSet ds; protected void Page_Load(object sender, EventArgs e)
{
if (Session["user_id"]==null )
{
Response.Redirect("Login.aspx");
}
Button1.Text = Session["user_id"].ToString();
myconn.ConnectionString = ConfigurationManager.ConnectionStrings["sql_connect_string"].ConnectionString;
if (myconn.State != ConnectionState.Open)
{
myconn.Open();
} if (!IsPostBack)
{
//tvMenu.Dispose();
//myconn.Open();
this.createDataSet();
this.InitTree(tvMenu.Nodes, "0");
}
} private DataSet createDataSet()
{
ds = new DataSet();
string sqlstr = "select * from v_user_role where user_id='" + Session["user_id"].ToString() + "'";
SqlDataAdapter cmdSelect = new SqlDataAdapter(sqlstr, myconn);
cmdSelect.Fill(ds, "v_user_role");
return ds;
} protected void InitTree(TreeNodeCollection Nds, string parentID) //用递归方法动态生成节点
{
DataView dv = new DataView();
TreeNode tmpNode;
dv.Table = ds.Tables["v_user_role"];
dv.RowFilter = "parent_role_id=" + "'" + parentID + "'";
foreach (DataRowView drv in dv)
{
tmpNode = new TreeNode();
tmpNode.Value = drv["role_id"].ToString();
tmpNode.Text = drv["name"].ToString();
tmpNode.NavigateUrl = drv["url"].ToString();
Nds.Add(tmpNode);
this.InitTree(tmpNode.ChildNodes, tmpNode.Value);
}
}}
using System;
using System.Data;
using System.Data.SqlClient;
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;public partial class _Default : System.Web.UI.Page
{
public SqlConnection myconn = new SqlConnection();
DataSet ds; protected void Page_Load(object sender, EventArgs e)
{
if (Session["user_id"]==null )
{
Response.Redirect("Login.aspx");
}
Button1.Text = Session["user_id"].ToString();
myconn.ConnectionString = ConfigurationManager.ConnectionStrings["sql_connect_string"].ConnectionString;
if (myconn.State != ConnectionState.Open)
{
myconn.Open();
} if (!IsPostBack)
{
//tvMenu.Dispose();
//myconn.Open();
this.createDataSet();
this.InitTree(tvMenu.Nodes, "0");
}
} private DataSet createDataSet()
{
ds = new DataSet();
string sqlstr = "select * from v_user_role where user_id='" + Session["user_id"].ToString() + "'";
SqlDataAdapter cmdSelect = new SqlDataAdapter(sqlstr, myconn);
cmdSelect.Fill(ds, "v_user_role");
return ds;
} protected void InitTree(TreeNodeCollection Nds, string parentID) //用递归方法动态生成节点
{
DataView dv = new DataView();
TreeNode tmpNode;
dv.Table = ds.Tables["v_user_role"];
dv.RowFilter = "parent_role_id=" + "'" + parentID + "'";
foreach (DataRowView drv in dv)
{
tmpNode = new TreeNode();
tmpNode.Value = drv["role_id"].ToString();
tmpNode.Text = drv["name"].ToString();
tmpNode.NavigateUrl = drv["url"].ToString();
Nds.Add(tmpNode);
this.InitTree(tmpNode.ChildNodes, tmpNode.Value);
}
}}
private DataSet createDataSet()
{
ds = new DataSet();
string sqlstr = "select * from v_user_role where user_id='" + Session["user_id"].ToString() + "'"; //里面只有一个记录,那有树形结构,可能parent_role_id="0"的记录都不存在,应该全选出来,从Session["user_id"]的记录开始处理
SqlDataAdapter cmdSelect = new SqlDataAdapter(sqlstr, myconn);
cmdSelect.Fill(ds, "v_user_role");
return ds;
}
{
ds = new DataSet();
string sqlstr = "select * from v_user_role where user_id='" + Session["user_id"].ToString() + "'";
//里面只有一个记录,那有树形结构,可能parent_role_id="0"的记录都不存在,
//应该全选出来,从Session["user_id"]的记录开始处理
SqlDataAdapter cmdSelect = new SqlDataAdapter(sqlstr, myconn);
cmdSelect.Fill(ds, "v_user_role");
return ds;
}
if (!IsPostBack)
{
//tvMenu.Dispose();
//myconn.Open();
this.createDataSet();
//createDataSet()方法中不要where user_id='" + Session["user_id"].ToString() + "'"字句
//this.InitTree(tvMenu.Nodes, "0"); 应该这样写
DataView dv = new DataView();
TreeNode tmpNode;
dv.Table = ds.Tables["v_user_role"];
dv.RowFilter = "user_id=" + "'" + Session["user_id"] + "'";
foreach (DataRowView drv in dv)
{
tmpNode = new TreeNode();
tmpNode.Value = drv["role_id"].ToString();
tmpNode.Text = drv["name"].ToString();
tmpNode.NavigateUrl = drv["url"].ToString();
tvMenu.Nodes.Add(tmpNode);
this.InitTree(tmpNode.ChildNodes, tmpNode.Value);
} }