You should write xml or retrieve from database ans format it as xml then assign it to treeviewif you want to retrieve it from databaseyou can refer the followingI use this to generate menu dynamically. Hope it is useful. string stmtModule = "SELECT MODULE_NAME,URL FROM MODULES WHERE MODULE_NO IN "+ "(SELECT MODULE_NO FROM FUNCTIONS F,RIGHTS RI,ROLES R,USERS U WHERE "+ " U.ROLE_NO=R.ROLE_NO AND R.ROLE_NO=RI.ROLE_NO AND F.FUNCTION_NO=RI.FUNCTION_NO AND "+ " U.USER_NAME='"+userName+"')"; SqlDataReader drModule = SPIDDBHelper.GetDataReader(stmtModule); int i=1; if(drModule.HasRows) { while (drModule.Read()) { MenuItem item = new MenuItem(); item.Text = drModule["Module_Name"].ToString(); item.NavigateUrl = drModule["URL"].ToString() + ".aspx"; this.Menu1.Items.Add(item); string stmtFunction = "SELECT FUNCTION_NAME,URL FROM FUNCTIONS WHERE " + "FUNCTION_NO IN (SELECT FUNCTION_NO FROM RIGHTS RI, ROLES R, USERS U WHERE " + "U.ROLE_NO=R.ROLE_NO AND R.ROLE_NO=RI.ROLE_NO AND " + " U.USER_NAME='" + userName + "') AND MODULE_NO IN " + "(SELECT MODULE_NO FROM MODULES WHERE MODULE_NAME='" + item.Text + "')"; SqlDataReader drFunction = SPIDDBHelper.GetDataReader(stmtFunction); if (drFunction.HasRows) { while (drFunction.Read()) { MenuItem subItem = new MenuItem(); subItem.Text = drFunction["Function_Name"].ToString(); subItem.NavigateUrl = drFunction["URL"].ToString() + ".aspx"; this.Menu1.Items[i].ChildItems.Add(subItem); } i++; } } }
谢谢
"(SELECT MODULE_NO FROM FUNCTIONS F,RIGHTS RI,ROLES R,USERS U WHERE "+
" U.ROLE_NO=R.ROLE_NO AND R.ROLE_NO=RI.ROLE_NO AND F.FUNCTION_NO=RI.FUNCTION_NO AND "+
" U.USER_NAME='"+userName+"')"; SqlDataReader drModule = SPIDDBHelper.GetDataReader(stmtModule); int i=1;
if(drModule.HasRows)
{
while (drModule.Read())
{
MenuItem item = new MenuItem();
item.Text = drModule["Module_Name"].ToString();
item.NavigateUrl = drModule["URL"].ToString() + ".aspx";
this.Menu1.Items.Add(item);
string stmtFunction = "SELECT FUNCTION_NAME,URL FROM FUNCTIONS WHERE " +
"FUNCTION_NO IN (SELECT FUNCTION_NO FROM RIGHTS RI, ROLES R, USERS U WHERE " +
"U.ROLE_NO=R.ROLE_NO AND R.ROLE_NO=RI.ROLE_NO AND " +
" U.USER_NAME='" + userName + "') AND MODULE_NO IN " +
"(SELECT MODULE_NO FROM MODULES WHERE MODULE_NAME='" + item.Text + "')";
SqlDataReader drFunction = SPIDDBHelper.GetDataReader(stmtFunction);
if (drFunction.HasRows)
{
while (drFunction.Read())
{
MenuItem subItem = new MenuItem();
subItem.Text = drFunction["Function_Name"].ToString();
subItem.NavigateUrl = drFunction["URL"].ToString() + ".aspx";
this.Menu1.Items[i].ChildItems.Add(subItem);
}
i++;
}
}
}