| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1905 人关注过本帖
标题:如何实现ComboBox递归绑定数据库,下拉显示数列表的功能
只看楼主 加入收藏
bamboowind
Rank: 1
来 自:河北石家庄市
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-3-19
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
如何实现ComboBox递归绑定数据库,下拉显示数列表的功能
各位好:
       我数据库中有三个字段,菜单编号ID,菜单名称NAME,父菜单编号ParentId,如何用递归的方法实现下拉的树形效果,非常感谢,这块内容不熟悉,请尽量将C#代码写得详细些!


[ 本帖最后由 bamboowind 于 2011-3-19 15:46 编辑 ]
搜索更多相关主题的帖子: 数据库 
2011-03-19 15:45
zhp223
Rank: 5Rank: 5
等 级:职业侠客
帖 子:99
专家分:362
注 册:2010-3-21
收藏
得分:10 
先把数据全部取出来存到List<Menu> lst中。
void Form1_Load(..)
{
    // 从数据库中获取菜单列表
    List<Menu> lst = ...;
    // 递归分组,实现树形效果
    var groupedMenuList = GroupMenuList(lst, 0, 0);
    comboBox1.DataSource = groupedMenuList;
    ...
}
List<Menu> GroupMenuList(List<Menu> menuList, int parentId, int level)
{
    var childMenuList = menuList.Where(a => a.ParentId == parentId).ToList();
    List<Menu> groupedList = new List<Menu>();
    foreach(var it in childMenuList )
    {
        groupedList.Add(new Menu { MenuId = it.MenuId, ParentId = it.ParentId, MenuName = new string('.', level * 3) + it.MenuName });
        groupedList.AddRange(GroupMenuList(menuList, it.MenuId, level + 1));
    }
    return groupedList;
}

日有所思,夜有所梦
2011-03-20 17:01
liu33851861
Rank: 2
等 级:论坛游民
帖 子:1
专家分:10
注 册:2011-3-21
收藏
得分:10 
    ///<sarmmary>
    ///
    /// </sarmmary>
    // 绑定行政区域下拉列表  
    private void BindAreaDDL()
    {
        Un_Calt.Items.Clear();
        //初始化下拉列表第一个值
        Un_Calt.Items.Insert(0, new ListItem("===请选择===", "0"));
        SqlConnection myConn = GetConnection();

        myConn.Open();
        string sqlStr = "select * from C_table  ";
        SqlCommand myCmd = new SqlCommand(sqlStr, myConn);
        SqlDataAdapter myDa = new SqlDataAdapter(myCmd);          //构造一个SqlDataAdapter
        DataSet myDs = new DataSet();
        myDa.Fill(myDs, "C_table");
        myConn.Close();
        //开始绑定DropDownList
        //指定DropDownList使用的数据源
        if (myDs.Tables.Count > 0)
        {
            var query1 = myDs.Tables[0].AsEnumerable().Where(x => x["ParentID"].ToString() == "0");
            foreach (var item in query1)
            {
                ListItem li = new ListItem(item["PName"].ToString(), item["Classid"].ToString());
                Un_Calt.Items.Add(li);
                int index = 1;
                AddChildListItem(myDs, item["Classid"].ToString(), index);
            }
        }
    }
    // 递归添加子项  
    private void AddChildListItem(DataSet ds, string pid, int index)
    {
        int tmp = index;  // 保存层级  
        // 计算前面的空白  
        string space_str = "";
        for (int i = 0; i < index; i++)
        {
            space_str += "...";
        }
        var query1 = ds.Tables[0].AsEnumerable().Where(x => x["parentid"].ToString() == pid);
        foreach (var item in query1)
        {
            ListItem li = new ListItem(space_str + item["PName"].ToString(), item["Classid"].ToString());
            Un_Calt.Items.Add(li);
            index++;
            AddChildListItem(ds, item["Classid"].ToString(), index);
            index = tmp;  // 还原层级  
        }
    }


    public DataSet GetDataSet()
    {
        SqlConnection myConn = GetConnection();
        myConn.Open();
        string sqlStr = "select PName,classID from C_table Where ParentID=0 order by POrder desc";
        SqlCommand myCmd = new SqlCommand(sqlStr, myConn);
        SqlDataAdapter myDa = new SqlDataAdapter(myCmd);          //构造一个SqlDataAdapter
        DataSet myDs = new DataSet();
        myConn.Close();
        myDs.Tables[0].Columns[""].ToString();
        //开始绑定DropDownList
        //指定DropDownList使用的数据源
        return myDs;

    }
    protected void Un_Calt_SelectedIndexChanged(object sender, EventArgs e)
    {
        string a = this.Un_Calt.Text.ToString();
        Response.Write(a);
        Response.End();

    }


///
///
///

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            BindAreaDDL();
        }
    }



快给哥分
收到的鲜花
  • bamboowind2011-03-28 23:05 送鲜花  3朵   附言:我很赞同
  • bamboowind2011-03-28 23:09 送鲜花  3朵   附言:好文章
2011-03-21 17:47
bamboowind
Rank: 1
来 自:河北石家庄市
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-3-19
收藏
得分:0 
回复 3楼 liu33851861
嗯嗯,比较全,分给了你吧!

自己懂得永远少!
2011-03-28 23:04
快速回复:如何实现ComboBox递归绑定数据库,下拉显示数列表的功能
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021753 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved