Asp.net构建动态菜单的关键函数(数据库是sql2000)
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
TreeNode boot=new TreeNode();
boot.Text="根目录";//主目录名
string name=boot.Text;
this.TreeView1.Nodes.Add(boot);
createchildtree(boot, returntable(name));
}
}
public void createchildtree(TreeNode parentNode, DataTable table)//用递归的方法来显示数状菜单
{
DataRow[]rowlist=table.Select("treeName='"+parentNode.Text+"'");
foreach (DataRow row in rowlist)
{
TreeNode childtree = new TreeNode();
childtree.Text = row["chtreeName"].ToString();
childtree.NavigateUrl = row["chtreeUrl"].ToString();
//node.Target = "mainFrame" 这行代码在框架页中很重要,是指明树结点链接地址存放在那个框架页中,mainFrame是框架页在名字
parentNode.ChildNodes.Add(childtree);
createchildtree(childtree, returntable(childtree.Text));
}
}
public DataTable returntable(string strcon)//通过传进来的字符串来返回树结点名=数据库里的字段名相同的datatable
{
string str = "server=.;database=tree;uid=sa;pwd=sa";
SqlConnection con = new SqlConnection(str);
con.Open();
SqlDataAdapter ada = new SqlDataAdapter("select * from tree where treeName='"+strcon+"'", con);
DataSet set = new DataSet();
ada.Fill(set, "tree");
DataTable table = set.Tables[0];
return table;
}