protected treeop tree = new treeop();
SqlConnection cn = new SqlConnection();
SqlCommand cmd;
protected void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
#region 如果不是初次加载就退出Page_Load
if (IsPostBack)
{
return;
}
#endregion
//调用方法,以userid作为条件
this.ShowTree(Session["userid"].ToString());
Add("0", (TreeNode)null);
}
#region 查找用户的可操作项
public void ShowTree(string userid)
{
cn.ConnectionString = ConfigurationManager.ConnectionStrings["FixItemMgeConnectionString"].ConnectionString;
cn.Open();
cmd = new SqlCommand("menu_pro", cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@userid", SqlDbType.Char, 10);
cmd.Parameters[0].Value = userid;
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
da.SelectCommand = cmd;
da.Fill(ds);
cn.Close();
//将DataSet存入会话变量,以便提高速度
Session["ds"] = ds;
}
#endregion
#region 用递归从数据库中动态加载树控件
private void Add(string parent_id, TreeNode pNode)
{
//用存在会话变量中的DataSet作为条件
DataView dv = new DataView(((DataSet)Session["ds"]).Tables[0]);
//过滤parent_id,得到当前所有的子节点
dv.RowFilter = "parent_id='" + parent_id + "'";
foreach (DataRowView drv in dv)
{
TreeNode tnp = new TreeNode();
if (pNode == null)
{
tnp.Text = drv[2].ToString();
//如果child_id != "900" ,则将页面加到Mainframe块中。否则关闭框架,弹出链接页面。
if (drv[1].ToString().Trim() != "900")
{
tnp.Target = "Mainframe";
}
else
{
tnp.Target = "_parent";
}
tnp.NavigateUrl = "~/" + drv[3].ToString();
this.TreeView1.Nodes.Add(tnp);
//再次递归
Add(drv[1].ToString(), tnp);
}
else
{
tnp.Text = drv[2].ToString();
//如果child_id != "900" ,则将页面加到Mainframe块中。否则关闭框架,弹出链接页面。
if (drv[1].ToString().Trim() != "900")
{
tnp.Target = "Mainframe";
}
else
{
tnp.Target = "_parent";
}
tnp.NavigateUrl = "~/" + drv[3].ToString();
pNode.ChildNodes.Add(tnp);
//再次递归
Add(drv[1].ToString(), tnp);
}
}
}
#endregion