• ASP.NET中递归绑定DDL下拉控件


    做个记录,省得以后用到的时候都得再找以前写的代码,而且发现以前写的代码还有点错误的,但层级达到3层以上的时候就看得出错误在哪了,下面是更正后的代码:

    代码
    // 绑定行政区域下拉列表
    private void BindAreaDDL()
    {
        ddl行政区域.Items.Clear();
        ddl行政区域.Items.Insert(
    0new ListItem("""0"));
        DataSet ds 
    = new S_Area2DAO().GetList("");
        
    if (ds.Tables.Count > 0)
        {
            var query1 
    = ds.Tables[0].AsEnumerable().Where(x => x["parentid"].ToString() == "0");
            
    foreach (var item in query1)
            {
                ListItem li 
    = new ListItem(item["name"].ToString(), item["id"].ToString());
                ddl行政区域.Items.Add(li);
                
    int index = 1;
                AddChildListItem(ds, item[
    "id"].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["name"].ToString(), item["id"].ToString());
            ddl行政区域.Items.Add(li);
            index
    ++;
            AddChildListItem(ds, item[
    "id"].ToString(), index);
            index 
    = tmp;  // 还原层级
        }
    }
    撸码:复制、粘贴,拿起键盘就是“干”!!!
  • 相关阅读:
    C# 泛型的逆变与协变
    C# 元组
    DNS服务原理与搭建自己的DNS服务器
    浅析DNS域名解析过程
    Python turtle.circle()函数
    Python 实现点名系统
    PyCharm Debugger中Step Over、Step Into、Step Into My Code、Force Step Into、Step Out、Run to Cursor意思区别
    TypeScript与JavaScript比较(区别)
    微信小程序开发环境搭建
    Windows.edb 文件占据巨大的硬盘存储空间
  • 原文地址:https://www.cnblogs.com/niunan/p/1791522.html
Copyright © 2020-2023  润新知