将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();
}
将DataTable生成树json的更多相关文章
- 靠谱的datatable转json方法
今天有之前同事问我要datatable转json的方法,以前自己也弄过,但感觉网上有很多不靠谱的方法.所以自己在博客里记录一个,当然也是网上找的,但是这个靠谱一点,起码可以用不会报错,所以叫他靠谱的d ...
- DataTable转Json字符串(使用Newtonsoft.Json.dll)
DataTable转Json字符串(使用Newtonsoft.Json.dll) 在需要把DataTable转为Json字符串时,自己手动拼接太麻烦,而且容易出错,费时费力,使用Newtonsoft. ...
- DataTable 和Json 字符串互转
#region DataTable 转换为Json字符串实例方法 /// <summary> /// GetClassTypeJosn 的摘要说明 /// </summary> ...
- [C#]Datatable和json互相转换操作
#region DataTable 转换为Json字符串实例方法 /// <summary> /// GetClassTypeJosn 的摘要说明 /// </summary> ...
- Datatable转换Json
#region Datatable转换为Json /// <summary> /// Datatable转换为Json /// </su ...
- C#中把Datatable转换为Json的5个代码实例
一. /// <summary> /// Datatable转换为Json /// </summary> /// <param name="table" ...
- JSON之Asp.net MVC C#对象转JSON,DataTable转JSON,List转JSON,JSON转List,JSON转C#对象
一.JSON解析与字符串化 JSON.stringify() 序列化对象.数组或原始值 语法:JSON.stringify(o,filter,indent) o,要转换成JSON的对象.数组或原始值 ...
- C#中DataTable转换JSON
#region 将DataTable转换为json public string dt2json(DataTable dt) { JavaScriptSerializer jss = new JavaS ...
- DataTable转json字符串,jQuery.parseJSON()把json字符串转为标准的json对象格式
1.string res = DataTableToJson.DataTable2Json(dt);讲DataTable转换为json字符串 http://www.365mini.com/page/j ...
随机推荐
- Red Hat Enterprise Linux 各个版本以及发布日期
Red Hat Enterprise Linux 7 Release/Update General Availability Date redhat-release Errata Date* Kern ...
- SQL Server修改数据库对象所有者(Owner)浅析
在SQL Server数据库中如何修改数据库对象(表.视图.存储过程..)的所有者(Owner)呢?一般我们可以使用系统提供的系统存储过程sp_changeobjectowner来修改. 我们先看看s ...
- ORACLE调整SGA_TARGET值耗费时间长案例
在一数据库版本为(标准版)Oracle Database 10g Release 10.2.0.4.0 - 64bit Production 的服务器上调整 sga_target时,遇到命令执行了非常 ...
- Solr部分更新MultiValued的Date日期字段时报错及解决方案
问题描述如标题. 异常信息如下: Result Caused by: org.apache.solr.common.SolrException: Invalid Date String:'Mon Se ...
- 搭建自己的PHP框架心得(三)
h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h ...
- .dat 导入sqlserver2000
所有任务->还原数据库->从设备.选项中改变路径地址
- 解决MyEclipse中的js报错的小方法
今天,下了个模版,但是导进去的时候发现js会报错.看了下其他都没有错误.而有一个js报错误,请原谅我有点红色强迫症,不能留一点红色 . 错误如下:Syntax error on token " ...
- thrift的lua实现
最近要进行系统升级,后台的数据是根据城市区分的.担心新系统的稳定性及新数据的准确性,计划部分城市采用新接口.接口的入参里没有城市信息,只有经纬度坐标,需要调用一个thrift接口来根据坐标获取城市信息 ...
- 2016.10.30 NOIP模拟赛 day2 PM 整理
满分:300分 直接全部爆零,真的是很坑啊! 10.30的题目+数据:链接:http://pan.baidu.com/s/1jHXLace 密码:i784 T1: 题目中的难点就是每次折叠的点可能应经 ...
- TCP 连接的建立和释放
TCP(Transmission Control Protocol) 传输控制协议 1.三次握手协议(建立连接) TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: ...