您的位置:首页 > Web前端 > JQuery

asp.net返回json 动态生成jQuery Easyui tree

2013-09-18 15:19 555 查看
在角色授权管理中用到

效果图



HTML代码

<form id="form1" runat="server">

<div>

<asp:HiddenField ID="HiddenField1" runat="server" />

<ul id="tt" class="easyui-tree" >

</ul>

</form>

js代码

$('#tt').tree({

url:'Handler2.ashx',

method:'get',

animate:true,

checkbox: true,

onClick: function (node) {
//添加代码

alert(node.target);

},

formatter: function (node) {

var s = node.text;

if (node.children) {

s += ' <span style=\'color:blue\'>(' + node.children.length + ')</span>';

} else {

if ($('#tree').tree('isLeaf', node.target) && node.checked) {

s = ' <span style=\'color:red\'>' + s + '</span>';

}

}

return s;

}

});

Handler2.ashx

public void ProcessRequest(HttpContext context)

{

context.Response.ContentType = "text/plain";

DataTable dt = new UserInfoManager().getRoleMenu("1");

string strjson = DataTable2Json(dt, "0", new StringBuilder(""));

context.Response.Write(strjson);

}

/// <summary>

/// 拼接jQuery EasyUi tree接受的json字符串

/// </summary>

/// <param name="dt">查询的结果</param>

/// <param name="parentid">树根的parentid</param>

/// <param name="jsonBuilder">返回的字符串</param>

/// <returns>jQuery EasyUi tree接受的json字符串</returns>
public static string DataTable2Json(DataTable dt, string parentid, StringBuilder jsonBuilder)

{

jsonBuilder.Append("[");

DataView dv = new DataView(dt);

dv.RowFilter = "parentid=" + parentid;

foreach (DataRowView row in dv)

{

jsonBuilder.Append("{");

jsonBuilder.Append("\"id\":");

jsonBuilder.Append("\"");

jsonBuilder.Append(row["id"].ToString());

jsonBuilder.Append("\",");

jsonBuilder.Append("\"checked\":");

//jsonBuilder.Append("\"");

jsonBuilder.Append(row["checked"].ToString());

//jsonBuilder.Append("\",");

jsonBuilder.Append(",");

jsonBuilder.Append("\"text\":");

jsonBuilder.Append("\"");

jsonBuilder.Append(row["text"].ToString());

jsonBuilder.Append("\",");

jsonBuilder.Append("\"attributes\":{");

jsonBuilder.Append("\"url\":");

jsonBuilder.Append("\"");

jsonBuilder.Append(row["url"].ToString());

jsonBuilder.Append("\"");

jsonBuilder.Append("}");

DataView dv2 = new DataView(dt);

dv2.RowFilter = "parentid=" + row["id"].ToString();

DataTable newTable = dv2.ToTable();

if (newTable.Rows.Count > 0)

{

jsonBuilder.Append(",\"children\":");

DataTable2Json(dt, row["id"].ToString(), jsonBuilder);

}

jsonBuilder.Append("},");

}

jsonBuilder.Remove(jsonBuilder.Length - 1, 1);

jsonBuilder.Append("]");

return jsonBuilder.ToString();

}

public DataTable getRoleMenu(string roleid)

{

string sql = "select case when a.id=b.id and b.url is not null then 'true' when a.id is null then 'false' else 'false' end as checked, b.* from rolemenu a right join menutab b on a.id=b.id and a.roleid ='" + roleid + "' group by b.parentid,b.id,a.id,b.text,b.url";

return DBHelper.getData(sql);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: