菜单控件仅显示“根项目",但不显示子项. [英] Menu Control showing only Root Items, but no child items.

查看:73
本文介绍了菜单控件仅显示“根项目",但不显示子项.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

朋友...
我正在尝试绑定菜单控件.但是它仅显示根项目而不显示子项目.
我正在这样尝试.....

HI friends...
I am trying to bind menu control.But it only show Root Items not showing child items.
I am trying as like this.....

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.Collections.Generic;


public partial class _Default : System.Web.UI.Page
{
    DataTable dt = new DataTable();
    SqlConnection con = new SqlConnection("Data Source=WGT-SRVR1;Initial Catalog=fgdfg_DB;User ID=fgf;Password=fgdfgfdgdf");
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            //GetMenuData();
        populateMenuItem();
    }
    private void populateMenuItem()
    {
        DataTable menuData = GetMenuData();
        AddTopMenuItems(menuData);
        
    }
    private DataTable GetMenuData()
    {
        con.Open();
        SqlCommand cmd = new SqlCommand("select CA_ID,CA_Name,CA_Order,CA_Parent from TBL_Category", con);
        SqlDataReader sdr = cmd.ExecuteReader();
        DataTable dt = new DataTable();

        dt.Load(sdr);
        con.Close();
        return dt;
    }
        private void AddTopMenuItems(DataTable menuData)
        {
            GetMenuData();
            DataView view = new DataView(menuData);
            view.RowFilter = "CA_Parent IS NULL";
           
            foreach (DataRowView row in view)
            {
                MenuItem newMenuItem = new MenuItem(row["CA_Name"].ToString(), row["CA_Parent"].ToString());
                Menu1.Items.Add(newMenuItem);
                
                AddChildMenuItems(menuData, newMenuItem);
            }

        }
        private void AddChildMenuItems(DataTable menuData, MenuItem parentMenuItem)
        {
            DataView view = new DataView(menuData);
            string str = parentMenuItem.Text.ToString();
           view.RowFilter = "CA_Parent='" + parentMenuItem.Text.ToString()+"'";
            //view.RowFilter = "CA_Parent=" +parentMenuItem.Text + "";
            //+parentMenuItem.Value.ToString();
            foreach (DataRowView row in view)
            {
                MenuItem newMenuItem = new MenuItem(row["CA_Name"].ToString(), row["CA_Parent"].ToString());
                parentMenuItem.ChildItems.Add(newMenuItem);
                AddChildMenuItems(menuData, newMenuItem);
            }
        }

    }




[edit]已添加代码块-OriginalGriff [/edit]




[edit]Code block added - OriginalGriff[/edit]

推荐答案

您需要使用过滤器
childitem的CA_Parent = ParentMenuitem的CA_ID
希望对您有帮助
you need use filter
childitem''s CA_Parent = ParentMenuitem''s CA_ID
i hope to help you


这篇关于菜单控件仅显示“根项目",但不显示子项.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆