easyui treegrid的json数据格式是什么样的啊,燥死我了! 自己下个api来看不就行了。。easyui api 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>TreeGrid - jQuery EasyUI Demo</title> <link rel="stylesheet" type="text/css" href="../themes/default/easyui.css"> <link rel="stylesheet" type="text/css" href="../themes/icon.css"> <link rel="stylesheet" type="text/css" href="demo.css"> <script type="text/javascript" src="../jquery-1.6.min.js"></script> <script type="text/javascript" src="../jquery.easyui.min.js"></script> <script> $(function(){ $('#test').treegrid({ title:'TreeGrid', iconCls:'icon-save', width:700, height:350, nowrap: false, rownumbers: true, animate:true, collapsible:true, url:'treegrid_data.json', idField:'code', treeField:'code', frozenColumns:[[ {title:'Code',field:'code',width:200, formatter:function(value){ return '<span style="color:red">'+value+'</span>'; } } ]], columns:[[ {field:'name',title:'Name',width:150}, {field:'addr',title:'Address',width:220,rowspan:2}, {field:'col4',title:'Col41',width:150,rowspan:2} ]], onBeforeLoad:function(row,param){ if (row){ $(this).treegrid('options').url = 'treegrid_subdata.json'; } else { $(this).treegrid('options').url = 'treegrid_data.json'; } }, onContextMenu: function(e,row){ e.preventDefault(); $(this).treegrid('unselectAll'); $(this).treegrid('select', row.code); $('#mm').menu('show', { left: e.pageX, top: e.pageY }); } }); }); function reload(){ var node = $('#test').treegrid('getSelected'); if (node){ $('#test').treegrid('reload', node.code); } else { $('#test').treegrid('reload'); } } function getChildren(){ var node = $('#test').treegrid('getSelected'); if (node){ var nodes = $('#test').treegrid('getChildren', node.code); } else { var nodes = $('#test').treegrid('getChildren'); } var s = ''; for(var i=0; i<nodes.length; i++){ s += nodes[i].code + ','; } alert(s); } function getSelected(){ var node = $('#test').treegrid('getSelected'); if (node){ alert(node.code+":"+node.name); } } function collapse(){ var node = $('#test').treegrid('getSelected'); if (node){ $('#test').treegrid('collapse', node.code); } } function expand(){ var node = $('#test').treegrid('getSelected'); if (node){ $('#test').treegrid('expand', node.code); } } function collapseAll(){ var node = $('#test').treegrid('getSelected'); if (node){ $('#test').treegrid('collapseAll', node.code); } else { $('#test').treegrid('collapseAll'); } } function expandAll(){ var node = $('#test').treegrid('getSelected'); if (node){ $('#test').treegrid('expandAll', node.code); } else { $('#test').treegrid('expandAll'); } } function expandTo(){ $('#test').treegrid('expandTo', '02013'); $('#test').treegrid('select', '02013'); } var codeIndex = 1000; function append(){ codeIndex++; var data = [{ code: 'code'+codeIndex, name: 'name'+codeIndex, addr: 'address'+codeIndex, col4: 'col4 data' }]; var node = $('#test').treegrid('getSelected'); $('#test').treegrid('append', { parent: (node?node.code:null), data: data }); } function remove(){ var node = $('#test').treegrid('getSelected'); if (node){ $('#test').treegrid('remove', node.code); } } </script></head><body> <h2>TreeGrid</h2> <div class="demo-info"> <div class="demo-tip icon-tip"></div> <div>Combines treeview and datagrid to represent hierarchical data.</div> </div> <div style="margin:10px 0;"> <a href="#" onclick="reload()">Reload</a> <a href="#" onclick="getChildren()">GetChildren</a> <a href="#" onclick="getSelected()">GetSelected</a> <a href="#" onclick="collapse()">Collapse</a> <a href="#" onclick="expand()">Expand</a> <a href="#" onclick="collapseAll()">CollapseAll</a> <a href="#" onclick="expandAll()">ExpandAll</a> <a href="#" onclick="expandTo()">ExpandTo</a> <a href="#" onclick="append()">Append</a> </div> <table id="test"></table> <div id="mm" class="easyui-menu" style="width:120px;"> <div onclick="append()">Append</div> <div onclick="remove()">Remove</div> </div></body></html>官方API [{ "id":1, "code":"01", "name":"name1", "addr":"address1", "col4":"col4 data", "iconCls":"icon-ok", "children":[{ "id":2, "code":"0101", "name":"name11", "addr":"address11", "checked":true },{ "id":3, "code":"0102", "name":"name12", "addr":"address12", "state":"closed" }]},{ "code":"02", "name":"Languages abc", "addr":"address2", "col4":"col4 data", "state":"closed", "children":[{ "code":"0201", "name":"Java", "col4":"col4 data", "state":"closed", "children":[{ "code":"02013", "name":"jdk1" },{ "code":"02014", "name":"jdk2" }] },{ "code":"0202", "name":"C#", "col4":"col4 data" }]}]楼上说的返回的JSON格式,为什么没用row的存在呢 先用ArrayList 动态添加,再用HashTable .add("rows",arrayList) using System;using System.Web;using YX.OA.BLL.Archive;using System.Web.SessionState;using YX.Security;using System.Text;using System.Data;namespace YX.OA.Archive.Archive.ArchiveSet.Class{ /// <summary> /// LeftTreeJson 的摘要说明 /// </summary> public class LeftTreeJson : IHttpHandler, IReadOnlySessionState { ClassBLL bll = new ClassBLL(); UnitBLL ubll = new UnitBLL(); public void ProcessRequest(HttpContext context) { UserInfo CurrentUserInfo = BasePage.GetUserInfo(); if (CurrentUserInfo == null) { context.Response.Write(YX.SSO.OATools.SecurityErr); return; } string id = context.Request["id"]; string id1 = id; if (id.Contains("★") || id.Contains("▲")) { id1 = id.EndsWith("★").ToString(); id1 = id.EndsWith("▲").ToString(); } string newsclassname = context.Server.UrlDecode(context.Request["FullName"]); StringBuilder sb = new StringBuilder(); #region if (id == id1) { DataSet ds = bll.GetParentClassByUnitId(id); sb.Append("{\"total\":" + ds.Tables[0].Rows.Count + ",\"rows\":["); if (ds.Tables[0].Rows.Count > 0) { for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { sb.Append("{\"id\":\"" + ds.Tables[0].Rows[i]["_ID"].ToString() + "★\""); sb.Append(",\"_ID\":\"" + ds.Tables[0].Rows[i]["_ID"].ToString() + "\""); sb.Append(",\"FullName\":\"" + ds.Tables[0].Rows[i]["FullName"].ToString() + "\""); sb.Append(",\"Code\":\"" + ds.Tables[0].Rows[i]["Code"].ToString() + "\""); sb.Append(",\"ShowOrder\":\"" + ds.Tables[0].Rows[i]["ShowOrder"].ToString() + "\""); sb.Append(",\"ParentID\":\"" + ds.Tables[0].Rows[i]["ParentID"].ToString() + "\""); DataSet dt = bll.GetChildrenClassByParentId(ds.Tables[0].Rows[i]["_ID"].ToString()); if (dt.Tables[0].Rows.Count > 0) { sb.Append(",\"state\":\"closed\""); } else { sb.Append(",\"state\":\"open\""); } sb.Append("},"); } sb = sb.Remove(sb.Length - 1, 1); sb.Append("]"); } else { sb.Append("]"); } sb.Append("}"); context.Response.Write(sb.ToString());//向前台输出字符串 } #endregion #region if (id.EndsWith("★")) { string parentid = id.TrimEnd('★'); DataSet ds = bll.GetChildrenClassByParentId(parentid); sb.Append("["); if (ds.Tables[0].Rows.Count > 0) { for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { string[] arry = ds.Tables[0].Rows[i]["parentid"].ToString().Split(','); string s = ds.Tables[0].Rows[i]["_ID"].ToString(); sb.Append("{\"id\":\"" + ds.Tables[0].Rows[i]["_ID"].ToString() + "▲\""); sb.Append(",\"_ID\":\"" + ds.Tables[0].Rows[i]["_ID"].ToString() + "\""); sb.Append(",\"FullName\":\"" + ds.Tables[0].Rows[i]["FullName"].ToString() + "\""); sb.Append(",\"ParentID\":\"" + ds.Tables[0].Rows[i]["ParentID"].ToString() + "\""); sb.Append(",\"Code\":\"" + ds.Tables[0].Rows[i]["Code"].ToString() + "\""); sb.Append(",\"ShowOrder\":\"" + ds.Tables[0].Rows[i]["ShowOrder"].ToString() + "\""); //sb.Append(",\"newsclassname_en\":\"" + ds.Tables[0].Rows[i]["newsclassname_en"].ToString() + "\""); for (int j = 0; j < arry.Length; j++) { if (arry[j].Contains(":")) { sb.Append(",\"" + arry[j].Split(':')[0] + "\":\"" + arry[j].Split(':')[1] + "\""); } else { sb.Append(",\"" + arry[j] + "\":\"\""); } } sb.Append("},"); } } sb = sb.Remove(sb.Length - 1, 1); sb.Append(Environment.NewLine); sb.Append("]"); context.Response.Write(sb.ToString());//向前台输出字符串 } #endregion #region //else if (id.EndsWith("▲")) { string parentid = id.TrimEnd('▲'); DataSet ds = bll.GetChildrenClassByParentId(parentid); sb.Append("["); if (ds.Tables[0].Rows.Count > 0) { for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { string[] arry = ds.Tables[0].Rows[i]["parentid"].ToString().Split(','); sb.Append("{\"id\":\"" + ds.Tables[0].Rows[i]["_ID"].ToString() + "\""); sb.Append(",\"_ID\":\"" + ds.Tables[0].Rows[i]["_ID"].ToString() + "\""); sb.Append(",\"FullName\":\"" + ds.Tables[0].Rows[i]["FullName"].ToString() + "\""); sb.Append(",\"parentid\":\"" + ds.Tables[0].Rows[i]["parentid"].ToString() + "\""); //sb.Append(",\"newsclassname_en\":\"" + ds.Tables[0].Rows[i]["newsclassname_en"].ToString() + "\""); sb.Append(",\"state\":\"open\""); for (int j = 0; j < arry.Length; j++) { if (arry[j].Contains(":")) { sb.Append(",\"" + arry[j].Split(':')[0] + "\":\"" + arry[j].Split(':')[1] + "\""); } else { sb.Append(",\"" + arry[j] + "\":\"\""); } } sb.Append("},"); } } sb = sb.Remove(sb.Length - 1, 1); sb.Append(Environment.NewLine); sb.Append("]"); context.Response.Write(sb.ToString());//向前台输出字符串 } #endregion } public bool IsReusable { get { return false; } } }} treegrid 从后台加载完数据之后,点击节点、折叠的时候会出现有空白的一行,我是用table的(之后更换了版本还是一样),有大神遇到这样的问题吗? 请教 jquery 的一个问题:怎么选择到期望的那些 radio ? 用HTML和JS制作的网页应用,能否申请双软认证? 关于浏览器的使用 js提交表单在FireFox失效 高分求教关于用javascript取得选中文字区域坐标的问题。 如何控制从数据库中动态调出的flash的尺寸大小和其它一些参数?!?!?!?!?!? 100分求在框架頁面用鍵盤鍵快速定位光標的實現﹐解決馬上結貼﹐分不夠可再加。 如何用脚本设置INPUT文本框里面的字体颜色? 如何通过一个超级链接实现对网页编码的设置? 两个JS文件在调用时冲突,求高手解答 js如何模拟浏览器行为呢 Extjs4为什么需要部署
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>TreeGrid - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="../themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../themes/icon.css">
<link rel="stylesheet" type="text/css" href="demo.css">
<script type="text/javascript" src="../jquery-1.6.min.js"></script>
<script type="text/javascript" src="../jquery.easyui.min.js"></script>
<script>
$(function(){
$('#test').treegrid({
title:'TreeGrid',
iconCls:'icon-save',
width:700,
height:350,
nowrap: false,
rownumbers: true,
animate:true,
collapsible:true,
url:'treegrid_data.json',
idField:'code',
treeField:'code',
frozenColumns:[[
{title:'Code',field:'code',width:200,
formatter:function(value){
return '<span style="color:red">'+value+'</span>';
}
}
]],
columns:[[
{field:'name',title:'Name',width:150},
{field:'addr',title:'Address',width:220,rowspan:2},
{field:'col4',title:'Col41',width:150,rowspan:2}
]],
onBeforeLoad:function(row,param){
if (row){
$(this).treegrid('options').url = 'treegrid_subdata.json';
} else {
$(this).treegrid('options').url = 'treegrid_data.json';
}
},
onContextMenu: function(e,row){
e.preventDefault();
$(this).treegrid('unselectAll');
$(this).treegrid('select', row.code);
$('#mm').menu('show', {
left: e.pageX,
top: e.pageY
});
}
});
}); function reload(){
var node = $('#test').treegrid('getSelected');
if (node){
$('#test').treegrid('reload', node.code);
} else {
$('#test').treegrid('reload');
}
}
function getChildren(){
var node = $('#test').treegrid('getSelected');
if (node){
var nodes = $('#test').treegrid('getChildren', node.code);
} else {
var nodes = $('#test').treegrid('getChildren');
}
var s = '';
for(var i=0; i<nodes.length; i++){
s += nodes[i].code + ',';
}
alert(s);
}
function getSelected(){
var node = $('#test').treegrid('getSelected');
if (node){
alert(node.code+":"+node.name);
}
}
function collapse(){
var node = $('#test').treegrid('getSelected');
if (node){
$('#test').treegrid('collapse', node.code);
}
}
function expand(){
var node = $('#test').treegrid('getSelected');
if (node){
$('#test').treegrid('expand', node.code);
}
}
function collapseAll(){
var node = $('#test').treegrid('getSelected');
if (node){
$('#test').treegrid('collapseAll', node.code);
} else {
$('#test').treegrid('collapseAll');
}
}
function expandAll(){
var node = $('#test').treegrid('getSelected');
if (node){
$('#test').treegrid('expandAll', node.code);
} else {
$('#test').treegrid('expandAll');
}
}
function expandTo(){
$('#test').treegrid('expandTo', '02013');
$('#test').treegrid('select', '02013');
}
var codeIndex = 1000;
function append(){
codeIndex++;
var data = [{
code: 'code'+codeIndex,
name: 'name'+codeIndex,
addr: 'address'+codeIndex,
col4: 'col4 data'
}];
var node = $('#test').treegrid('getSelected');
$('#test').treegrid('append', {
parent: (node?node.code:null),
data: data
});
}
function remove(){
var node = $('#test').treegrid('getSelected');
if (node){
$('#test').treegrid('remove', node.code);
}
}
</script>
</head>
<body>
<h2>TreeGrid</h2>
<div class="demo-info">
<div class="demo-tip icon-tip"></div>
<div>Combines treeview and datagrid to represent hierarchical data.</div>
</div>
<div style="margin:10px 0;">
<a href="#" onclick="reload()">Reload</a>
<a href="#" onclick="getChildren()">GetChildren</a>
<a href="#" onclick="getSelected()">GetSelected</a>
<a href="#" onclick="collapse()">Collapse</a>
<a href="#" onclick="expand()">Expand</a>
<a href="#" onclick="collapseAll()">CollapseAll</a>
<a href="#" onclick="expandAll()">ExpandAll</a>
<a href="#" onclick="expandTo()">ExpandTo</a>
<a href="#" onclick="append()">Append</a>
</div>
<table id="test"></table>
<div id="mm" class="easyui-menu" style="width:120px;">
<div onclick="append()">Append</div>
<div onclick="remove()">Remove</div>
</div>
</body>
</html>官方API
"id":1,
"code":"01",
"name":"name1",
"addr":"address1",
"col4":"col4 data",
"iconCls":"icon-ok",
"children":[{
"id":2,
"code":"0101",
"name":"name11",
"addr":"address11",
"checked":true
},{
"id":3,
"code":"0102",
"name":"name12",
"addr":"address12",
"state":"closed"
}]
},{
"code":"02",
"name":"Languages abc",
"addr":"address2",
"col4":"col4 data",
"state":"closed",
"children":[{
"code":"0201",
"name":"Java",
"col4":"col4 data",
"state":"closed",
"children":[{
"code":"02013",
"name":"jdk1"
},{
"code":"02014",
"name":"jdk2"
}]
},{
"code":"0202",
"name":"C#",
"col4":"col4 data"
}]
}]
楼上说的返回的JSON格式,为什么没用row的存在呢
using System.Web;
using YX.OA.BLL.Archive;
using System.Web.SessionState;
using YX.Security;
using System.Text;
using System.Data;namespace YX.OA.Archive.Archive.ArchiveSet.Class
{
/// <summary>
/// LeftTreeJson 的摘要说明
/// </summary>
public class LeftTreeJson : IHttpHandler, IReadOnlySessionState
{
ClassBLL bll = new ClassBLL();
UnitBLL ubll = new UnitBLL();
public void ProcessRequest(HttpContext context)
{
UserInfo CurrentUserInfo = BasePage.GetUserInfo();
if (CurrentUserInfo == null)
{
context.Response.Write(YX.SSO.OATools.SecurityErr);
return;
}
string id = context.Request["id"];
string id1 = id;
if (id.Contains("★") || id.Contains("▲"))
{
id1 = id.EndsWith("★").ToString();
id1 = id.EndsWith("▲").ToString();
}
string newsclassname = context.Server.UrlDecode(context.Request["FullName"]);
StringBuilder sb = new StringBuilder();
#region
if (id == id1)
{
DataSet ds = bll.GetParentClassByUnitId(id);
sb.Append("{\"total\":" + ds.Tables[0].Rows.Count + ",\"rows\":[");
if (ds.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
sb.Append("{\"id\":\"" + ds.Tables[0].Rows[i]["_ID"].ToString() + "★\"");
sb.Append(",\"_ID\":\"" + ds.Tables[0].Rows[i]["_ID"].ToString() + "\"");
sb.Append(",\"FullName\":\"" + ds.Tables[0].Rows[i]["FullName"].ToString() + "\"");
sb.Append(",\"Code\":\"" + ds.Tables[0].Rows[i]["Code"].ToString() + "\"");
sb.Append(",\"ShowOrder\":\"" + ds.Tables[0].Rows[i]["ShowOrder"].ToString() + "\"");
sb.Append(",\"ParentID\":\"" + ds.Tables[0].Rows[i]["ParentID"].ToString() + "\"");
DataSet dt = bll.GetChildrenClassByParentId(ds.Tables[0].Rows[i]["_ID"].ToString());
if (dt.Tables[0].Rows.Count > 0)
{
sb.Append(",\"state\":\"closed\"");
}
else
{
sb.Append(",\"state\":\"open\"");
}
sb.Append("},");
}
sb = sb.Remove(sb.Length - 1, 1);
sb.Append("]");
}
else
{
sb.Append("]");
}
sb.Append("}");
context.Response.Write(sb.ToString());//向前台输出字符串
}
#endregion
#region
if (id.EndsWith("★"))
{
string parentid = id.TrimEnd('★');
DataSet ds = bll.GetChildrenClassByParentId(parentid);
sb.Append("[");
if (ds.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string[] arry = ds.Tables[0].Rows[i]["parentid"].ToString().Split(',');
string s = ds.Tables[0].Rows[i]["_ID"].ToString();
sb.Append("{\"id\":\"" + ds.Tables[0].Rows[i]["_ID"].ToString() + "▲\"");
sb.Append(",\"_ID\":\"" + ds.Tables[0].Rows[i]["_ID"].ToString() + "\"");
sb.Append(",\"FullName\":\"" + ds.Tables[0].Rows[i]["FullName"].ToString() + "\"");
sb.Append(",\"ParentID\":\"" + ds.Tables[0].Rows[i]["ParentID"].ToString() + "\"");
sb.Append(",\"Code\":\"" + ds.Tables[0].Rows[i]["Code"].ToString() + "\"");
sb.Append(",\"ShowOrder\":\"" + ds.Tables[0].Rows[i]["ShowOrder"].ToString() + "\"");
//sb.Append(",\"newsclassname_en\":\"" + ds.Tables[0].Rows[i]["newsclassname_en"].ToString() + "\"");
for (int j = 0; j < arry.Length; j++)
{
if (arry[j].Contains(":"))
{
sb.Append(",\"" + arry[j].Split(':')[0] + "\":\"" + arry[j].Split(':')[1] + "\"");
}
else
{
sb.Append(",\"" + arry[j] + "\":\"\"");
}
}
sb.Append("},");
}
}
sb = sb.Remove(sb.Length - 1, 1);
sb.Append(Environment.NewLine);
sb.Append("]");
context.Response.Write(sb.ToString());//向前台输出字符串
}
#endregion
#region
//else
if (id.EndsWith("▲"))
{
string parentid = id.TrimEnd('▲');
DataSet ds = bll.GetChildrenClassByParentId(parentid);
sb.Append("[");
if (ds.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string[] arry = ds.Tables[0].Rows[i]["parentid"].ToString().Split(',');
sb.Append("{\"id\":\"" + ds.Tables[0].Rows[i]["_ID"].ToString() + "\"");
sb.Append(",\"_ID\":\"" + ds.Tables[0].Rows[i]["_ID"].ToString() + "\"");
sb.Append(",\"FullName\":\"" + ds.Tables[0].Rows[i]["FullName"].ToString() + "\"");
sb.Append(",\"parentid\":\"" + ds.Tables[0].Rows[i]["parentid"].ToString() + "\"");
//sb.Append(",\"newsclassname_en\":\"" + ds.Tables[0].Rows[i]["newsclassname_en"].ToString() + "\"");
sb.Append(",\"state\":\"open\"");
for (int j = 0; j < arry.Length; j++)
{
if (arry[j].Contains(":"))
{
sb.Append(",\"" + arry[j].Split(':')[0] + "\":\"" + arry[j].Split(':')[1] + "\"");
}
else
{
sb.Append(",\"" + arry[j] + "\":\"\"");
}
}
sb.Append("},");
}
}
sb = sb.Remove(sb.Length - 1, 1);
sb.Append(Environment.NewLine);
sb.Append("]");
context.Response.Write(sb.ToString());//向前台输出字符串
}
#endregion
} public bool IsReusable
{
get
{
return false;
}
}
}
}