treeview可以实现读数据库生成,但是menu不知道如何生成。
在快速如门中只有用xml生成的,做过的麻烦给个实例阿
http://beta.asp.net/QUICKSTART/aspnet/doc/ctrlref/navigation/menu.aspx

解决方案 »

  1.   

    public static DataTable ReadMainMenuData()
    {
    DataRow dr;
    DataTable dt=new  DataTable();
    dt.Columns.Add(new DataColumn("Text",typeof(string)));
    dt.Columns.Add(new DataColumn("ImageUrl",typeof(string)));
    dt.Columns.Add(new DataColumn("TargetUrl",typeof(string)));
    dr=dt.NewRow();
    dr[0]="File";
    dr[1]="../../../UI/Images/Organization.gif";
    dr[2]="../../../UI/Images/Organization.gif";
    dt.Rows.Add(dr);
    dr=dt.NewRow();
    dr[0]="Edit";
    dr[1]="../../../UI/Images/settings.gif";
    dr[2]="../../../UI/Images/settings.gif";
    dt.Rows.Add(dr);
    return dt;
    } public static DataTable ReadSubMenuData()
    {
    DataRow dr;
    DataTable dt=new  DataTable();
    dt.Columns.Add(new DataColumn("Text",typeof(string)));
    dt.Columns.Add(new DataColumn("ImageUrl",typeof(string)));
    dt.Columns.Add(new DataColumn("TargetUrl",typeof(string)));
    dr=dt.NewRow();
    dr[0]="submenu1";
    dr[1]="../../../UI/Images/Organization.gif";
    dr[2]="../../../UI/Images/Organization.gif";
    dt.Rows.Add(dr);
    dr=dt.NewRow();
    dr[0]="submenu2";
    dr[1]="../../../UI/Images/settings.gif";
    dr[2]="../../../UI/Images/settings.gif";
    dt.Rows.Add(dr);
    return dt;
    }
    把上面的两个假数据换成实际的从数据库读取,把下面的Infragistics控件的menu换成你自己的menu,稍稍改一下就可以了
    在load中调用如下方法
    DataTable dt=ReadMainMenuData();
    DataTable dtsub=ReadSubMenuData();
    for(int i=0;i<dt.Rows.Count;i++)
    {
    Infragistics.WebUI.UltraWebNavigator.Item  item=new Infragistics.WebUI.UltraWebNavigator.Item();
    item.Text=dt.Rows[i]["Text"].ToString();
    item.ImageUrl=dt.Rows[i]["ImageUrl"].ToString();
    item.TargetUrl=dt.Rows[i]["TargetUrl"].ToString();
    item.Style.Width=System.Web.UI.WebControls.Unit.Pixel(20);
    for(int j=0;j<dtsub.Rows.Count;j++)
    {
    Infragistics.WebUI.UltraWebNavigator.Item  subitem=new Infragistics.WebUI.UltraWebNavigator.Item();
    subitem.Text=dtsub.Rows[j]["Text"].ToString();
    subitem.ImageUrl=dtsub.Rows[j]["ImageUrl"].ToString();
    subitem.TargetUrl=dtsub.Rows[j]["TargetUrl"].ToString();
    item.Items.Add(subitem);
    }
    UltraWebMenu1.Items.Add(item);
    }
      

  2.   

    需要的menu最多有4层,层数不定,能用递归的办法么
      

  3.   

    这个强,如果谁有个IE WEB控件中4个的结合实例就好了
      

  4.   

    singlepine(小山)
       的代码在asp.net2.0里面改一下了还可以用,不过要是按你说的那样,那就要大改了哦
      

  5.   

    我照着人家做treeview的递归改了一下,可以用,
        private void bindmenu(MenuItemCollection  MIC, string depid)
        {
            DataSet ds = bindds();//获取DataSet,具体代码略
            DataView dv = ds.Tables["Users"].DefaultView;        
            dv.RowFilter = "ParentID=" + depid;       
            string strID;
            foreach (DataRowView dr in dv)
            {
                MenuItem mi = new MenuItem();
                    mi.Value = dr["UserID"].ToString();
                    strID = dr["UserID"].ToString();
                    mi.Text = dr["UserName"].ToString();
                    MIC.Add(mi);
                    bindmenu(MIC[MIC.Count-1].ChildItems , strID);
            }
        }
      

  6.   

    楼上得不错, 不过每次递归斗要重新设置dataset,会不会很占内存阿