zoukankan      html  css  js  c++  java
  • 将DataTable生成树json

     protected void Page_Load(object sender, EventArgs e)
            {
    
                if (!IsPostBack)
                {
                    ListMenu();
                }
            }
    
            protected string _menu = string.Empty;
            public void ListMenu()
            {
                StringBuilder sb = new StringBuilder();
                DataTable _list = new DataTable();
                string ConctionStr = "Data Source=127.0.0.1;Initial Catalog=AccordMenu;Integrated Security=False;User ID=sa;Password=sa";
                using (SqlConnection conec = new SqlConnection(ConctionStr))
                {
                    conec.Open();
                    string SqlText = "SELECT * FROM sys_menu";
                    SqlCommand Comand = new SqlCommand(SqlText, conec);
                    SqlDataAdapter Adaper = new SqlDataAdapter(Comand);
                    Adaper.Fill(_list);
                    Adaper.Dispose();
                    Comand.Dispose();
                    conec.Close();
                }
                DataRow[] rows = _list.Select("ParentID=0");
                sb.Append("[");
                bool isFist = false;
                foreach (DataRow dr in rows)
                {
                    if (isFist)
                        sb.Append(",");
                    isFist = true;
                    string id = dr["ID"].ToString();
                    sb.Append("{");
                    sb.AppendFormat(""id":"{0}",", dr["ID"]);
                    sb.AppendFormat(""text":"{0}",", dr["MenuName"]);
                    sb.AppendFormat(""pid":"{0}",", dr["ParentID"]);
                    sb.AppendFormat(""iconCls":"icon_{0}",", dr["Menu_ICON"]);
                    sb.AppendFormat(""ICON_ID":"{0}",", dr["Menu_ICON"]);
                    sb.AppendFormat(""url":"{0}",", dr["Menu_URL"]);
                    sb.AppendFormat(""ICON_URL":"{0}"", dr["ICON_URL"]);
                    sb.Append(",children:[");
                    sb.Append(GetSubMenu(id, _list));
                    sb.Append("]");
                    sb.Append("}");
                }
                sb.Append("]");
                _menu = sb.ToString();
    
            }
    
            /// <summary>
            /// 递归调用生成无限级别
            /// </summary>
            /// <param name="pid"></param>
            /// <param name="dt"></param>
            /// <returns></returns>
            private string GetSubMenu(string pid, DataTable dt)
            {
                StringBuilder sb = new StringBuilder();
                DataRow[] rows = dt.Select("ParentID=" + pid);
                if (rows.Length > 0)
                {
                    bool isFist = false;
                    foreach (DataRow dr in rows)
                    {
                        if (isFist)
                            sb.Append(",");
                        isFist = true;
                        string id = dr["ID"].ToString();
                        sb.Append("{");
                        sb.AppendFormat(""id":"{0}",", dr["ID"]);
                        sb.AppendFormat(""text":"{0}",", dr["MenuName"]);
                        sb.AppendFormat(""pid":"{0}",", dr["ParentID"]);
                        sb.AppendFormat(""iconCls":"icon_{0}",", dr["Menu_ICON"]);
                        sb.AppendFormat(""ICON_ID":"{0}",", dr["Menu_ICON"]);
                        sb.AppendFormat(""url":"{0}",", dr["Menu_URL"]);
                        sb.AppendFormat(""ICON_URL":"{0}"", dr["ICON_URL"]);
                        sb.Append(",children:[");
                        sb.Append(GetSubMenu(id, dt));
                        sb.Append("]");
                        sb.Append("}");
                    }
                }
                return sb.ToString();
            }
  • 相关阅读:
    小数据池以及深浅拷贝
    字典的初识,了解
    元组:认识,索引 切片
    列表的认识,嵌套,增删改查
    bool、字符串方法、for循环
    字符串格式化输出、while循环、运算符.
    Python的基础知识与历史应用
    git错误:error: failed to push some refs to 'https://...'
    golang中gin框架使用logrus
    golang中如何监控多个goroute协程是否执行完成
  • 原文地址:https://www.cnblogs.com/yeminglong/p/4498118.html
Copyright © 2011-2022 走看看