using System;
using System.Data;
using System.Data.OleDb;
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 DataProvider;
using WavenetWebFrameWork.FrameWorkBase.PageBase;namespace WaveDBMS
{
public partial class NewMenu : System.Web.UI.Page
{
#region ARGS private TreeNode[] treF, treC,treGs;
private TreeNode treG;
private string[] strF, strC,strCL,strGs,strGsL;
private string strCon,strDBType,strUID;
protected DataProviderFactory dpf;
private string strSqlF, strSqlC, strSqlGs;
private DataTable dtF,dtC,dtGs;
private int intFRowsLength, intCRowsLength, intGsRowsLength;
PageBase pb = new PageBase(); public string UserID
{
get { return strUID; }
set { strUID = value; }
} #endregion protected void Page_Load(object sender, EventArgs e)
{
strCon = System.Configuration.ConfigurationSettings.AppSettings.Get("UserAppData");
strDBType = System.Configuration.ConfigurationSettings.AppSettings.Get("UserAppDataType");
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"" + strCon + "\";Persist Security Info=True";
strCon = pb.userappdata;
dpf = new DataProviderFactory(strDBType, strCon, "");
strUID = "1";
if(!IsPostBack)
{
treG = new TreeNode();
treG.Text = "排水行业数据库";
treG.ImageUrl = "~/Images/database1.gif";
this.TreeV.Nodes.Add(treG);
this.BuildTrees();
}
} protected void BuildTrees()
{
strSqlF = "SELECT ID,MENUNAME,LINKURL FROM MENU WHERE PARENTID=-1";
String strSqlF4 = "";
strSqlF4 = "SELECT MENU.ID AS AA,MENU.MENUNAME AS BB,MENU.LINKURL AS CC,MENU.PARENTID AS DD ";
strSqlF4 += " FROM MENU,RULES,ROLE2RULE ";
strSqlF4 += " WHERE MENU.ID = RULES.MENUID ";
strSqlF4 += " AND RULES.RULEID = ROLE2RULE.RULEID";
strSqlF4 += " AND ROLE2RULE.ROLEID = "+strUID ;
strSqlF4 += " AND ROLE2RULE.RULEACTIONVALUE=1";
//strSqlF = "SELECT MENU2.AA,MENU2.BB,MENU2.CC,MENU2.DD FROM (" + strSqlF4 + ") MENU2 WHERE MENU2.DD=-1";
dtF = dpf.GetData(strSqlF);
intFRowsLength = dtF.Rows.Count;
if (intFRowsLength < 1)
{
return;
}
strF = new string[intFRowsLength];
treF = new TreeNode[intFRowsLength];
for (int i = 0; i < intFRowsLength ; i++)
{
strF[i] = dtF.Rows[i][1].ToString();
treF[i] = new TreeNode();
treF[i].Text=strF[i];
treF[i].CollapseAll();
treF[i].ImageUrl = "~/Images/database2.gif";
this.treG.ChildNodes.Add(treF[i]);
//////////////////
strSqlC = "SELECT ID,MENUNAME,LINKURL FROM MENU WHERE PARENTID=" + dtF.Rows[i][0].ToString();
//strSqlC = "SELECT MENU2.AA,MENU2.BB,MENU2.CC,MENU2.DD FROM (" + strSqlF4 + ") MENU2 WHERE MENU2.DD=" + dtF.Rows[i][0].ToString();
dtC = dpf.GetData(strSqlC);
intCRowsLength = dtC.Rows.Count;
strC = new string[intCRowsLength];
strCL = new string[intCRowsLength];
treC = new TreeNode[intCRowsLength];
for (int j = 0; j < intCRowsLength ; j++)
{
strSqlGs = "SELECT ID,MENUNAME,LINKURL FROM MENU WHERE PARENTID=" + dtC.Rows[j][0].ToString();
dtGs = dpf.GetData(strSqlGs);
intGsRowsLength = dtGs.Rows.Count; strC[j] = dtC.Rows[j][1].ToString();
strCL[j] = dtC.Rows[j][2].ToString();
treC[j] = new TreeNode();
treC[j].CollapseAll();
treC[j].Text = strC[j];
treC[j].NavigateUrl = strCL[j];
treC[j].Target = "MainData";
treC[j].ImageUrl = "~/Images/database3.gif";
if (intGsRowsLength>0)
{
treC[j].ImageUrl = "~/Images/database2.gif";
}
treF[i].ChildNodes.Add(treC[j]);
/////
if (intGsRowsLength == 0)
{
continue;
}
strGs = new string[intGsRowsLength];
strGsL = new string[intGsRowsLength];
treGs = new TreeNode[intGsRowsLength];
for (int h = 0; h < intGsRowsLength; h++)
{
strGs[h] = dtGs.Rows[h][1].ToString();
strGsL[h] = dtGs.Rows[h][2].ToString();
treGs[h] = new TreeNode();
treGs[h].Text = strGs[h];
treGs[h].NavigateUrl = strGsL[h];
treGs[h].Target = "MainData";
treGs[h].ImageUrl = "~/Images/database3.gif";
treC[j].ChildNodes.Add(treGs[h]);
}
}
}
}
}
}
if ( !this.Page.IsPostBack )
{
string MySQL = "select funcname,funccname from pdefNetRight order by OrderID";
SqlDataReader MyReader = MydbClass.MyReturnReader(MySQL); //调用函数MyReturnReader返回给MyReader(这里调用自已写的类。) try
{
//对用户权限判断,进行对Tree的控制
while (MyReader.Read())
{
TreeNode MyNodes = new TreeNode();
MyNodes.Text = MyReader["funccname"].ToString();
MyNodes.NavigateUrl = MyReader["funcname"].ToString();
Tree1.Nodes.Add(MyNodes);
}
} }
catch
{
MydbClass.MyConClose(); //关闭MyReader数据集
return;
}
}
楼主这是最基本的邦定例子
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;public partial class TKKMTest_KnowDotMenu : BasePage
{
public string strNav = "../KnowDot/KnowDotEdit.aspx?editmode=unable&kminfo={0}&pkdinfo={1}";
private int _kmID;
private DataTable dt = null;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//判断kmID是否为空或者是否为正整数
if (Request.QueryString["kmID"] != null && InterService.Utility.ValidateHelper.IsInteger(Request.QueryString["kmID"]) == true)
{
_kmID = int.Parse(Request.QueryString["kmID"]);
}
else
{
InterService.Utility.Utils.throwErrorAndClose("kmID参数类型不对","parent");
}
ShowKnowDotTree();
}
} #region 生成知识点树
/// <summary>
/// 生成知识点树
/// </summary>
private void ShowKnowDotTree()
{
try
{
InterService.TestBll.TestKnowDotBz tkdb = new InterService.TestBll.TestKnowDotBz();
dt = tkdb.getData(_kmID);
}
catch (Exception ex) //如果出现异常,则提示用户
{
InterService.Utility.Utils.throwErrorAndClose("生成知识点树失败:" + ex.Message,"parent");
return;
}
if (dt==null || dt.Rows.Count == 0) //如果为空,则说明当前科目下没有相应的知识点
{
string kmtm = _kmID.ToString() + "~" + Request["KMName"];
strNav = string.Format(strNav, HttpUtility.UrlEncode(kmtm), HttpUtility.UrlEncode("0~无"));
InterService.Utility.Utils.throwErrorAndClose("不存在该科目下的知识点,请先新建知识点", "parent");
//InterService.Utility.Utils.throwErrorGotoURL("不存在该科目下的知识点,请先新建知识点", strNav, "parent");
return;
}
else
{
TreeNode node = new TreeNode();
DataRow[] dr = dt.Select("I_ParentID=0", "I_OrderID");//筛选得到所有的根结点
this.KnowDotTreeView.ShowLines = true;
BindKnowDotTree(dr, node);
} }
/// <summary>
/// 递归生成知识点树
/// </summary>
/// <param name="dr">DataRow[]数组,经过DataTable.Select筛选</param>
/// <param name="node">当前节点</param>
private void BindKnowDotTree(DataRow[] dr, TreeNode node)
{
foreach (DataRow dr1 in dr)
{
if (dr1["I_ParentID"].ToString() == "0")//如果是根结点,添加到TreeView控件
{
TreeNode node1 = new TreeNode();
node1.Text = dr1["C_KDName"].ToString();
node1.Value = dr1["I_ParentID"].ToString();
if (dr1["C_ChildIDs"].ToString().Trim() != "")//判断是否含有子结点,如果有,提示:“请选择具体的知识点”
{
node1.NavigateUrl = "javascript:alert('请选择具体的知识点');";
}
else
{
node1.NavigateUrl = "javascript:parent.main.form1.txtKnowDot.value='" + dr1["C_KDName"].ToString() + "';parent.main.form1.txtKDID.value='" + dr1["I_KDID"].ToString() + "';parent.main.form1.HKDCode.value='" + dr1["C_KDCode"].ToString() + "';";
}
node1.Target = "top";
this.KnowDotTreeView.Nodes.Add(node1);
BindKnowDotTree(dt.Select("I_ParentID=" + dr1["I_KDID"].ToString(), "I_OrderID"), node1);//递归生成子树
}
else//否则添加到当前结点
{
TreeNode node1 = new TreeNode();
node1.Text = dr1["C_KDName"].ToString();
node1.Value = dr1["I_ParentID"].ToString();
if (dr1["C_ChildIDs"].ToString().Trim() != "")
{
node1.NavigateUrl = "javascript:alert('请选择具体的知识点');";
}
else
{
node1.NavigateUrl = "javascript:parent.main.form1.txtKnowDot.value='" + dr1["C_KDName"].ToString() + "';parent.main.form1.txtKDID.value='" + dr1["I_KDID"].ToString() + "';parent.main.form1.HKDCode.value='" + dr1["C_KDCode"].ToString() + "';";
}
node1.Target = "top";
node.ChildNodes.Add(node1);
BindKnowDotTree(dt.Select("I_ParentID=" + dr1["I_KDID"].ToString(), "I_OrderID"), node1);//递归生成子树
}
}
}
#endregion
}供你参考!