jqgrid treeGrid Json,如何在初始化数据时展开所有节点?
Json数据为:
{id: "1", name: "Cash", num: "100", debit: "400.00", credit: "250.00",
balance: "150.00", enbl: "1", level: "0", parent: "null",
isLeaf: false, expanded: true, loaded: true}
参数“expanded”似乎没有用?
我不知道在初始化 json 数据时如何展开所有节点或某些指定节点?
致 Oleg:感谢您的演示,但我无法访问该页面! - -! 然后,我向您展示我的javascript代码,也许您可以发现一些问题:
$(function () {
$('#list').jqGrid({
url: 'SvcDept.ashx',
ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
datatype: 'json',
mtype: 'GET',
treeGrid: true,
treeGridModel: 'adjacency',
ExpandColumn: 'Name',
colNames: ['ID', 'Name', 'Director', 'ParentID'],
colModel: [
{ name: 'ID', index: 'ID', hidden: true, width: 1, key: true },
{ name: 'Name', index: 'Name', width: 200, fixed: true },
{ name: 'Director', index: 'Director', width: 100 },
{ name: 'ParentID', index: 'ParentID', hidden: true, width: 1 }
],
autowidth: true,
height: 'auto'
});
});
和我的SvcDept.ashx:
public class SvcDept
{
public void ProcessRequest(HttpContext context)
{
var depts = context.Application["Departments"] as List<Department>;
var nodeid = context.Request["nodeid"];
var n_level = context.Request["n_level"];
Guid? deptID = nodeid != null ? new Guid(nodeid) : new Nullable<Guid>();
int level = n_level != null ? int.Parse(n_level) + 1 : 0;
var subDepts = depts.Where<Department>(x => x.ParentID == deptID).ToList<Department>();
var data = new
{
page = 1,
total = 1,
records = subDepts.Count,
rows = (from dept in subDepts
select new
{
cell = new[]
{
dept.ID.ToString(),
dept.Name,
dept.Director ,
dept.ParentID != null ? dept.ParentID.ToString() : "",
level.ToString(), //Level
deptID != null ? deptID.ToString() : "null", //ParentID
depts.Count<Department>(x => x.ParentID == dept.ID) == 0 ? "true":"false", //isLeaf
"true", //expanded
"false"//loaded
}
})
};
context.Response.ContentType = "application/json";
JavaScriptSerializer serializer = new JavaScriptSerializer();
context.Response.Write(serializer.Serialize(data));
}
public bool IsReusable
{
get
{
return false;
}
}
}
public class Department
{
public Guid ID { get; set; }
public string Name { get; set; }
public string Director { get; set; }
public Guid? ParentID { get; set; }
}
Json data as :
{id: "1", name: "Cash", num: "100", debit: "400.00", credit: "250.00",
balance: "150.00", enbl: "1", level: "0", parent: "null",
isLeaf: false, expanded: true, loaded: true}
the parameter "expanded" seem no use?
I don't know how to expand all nodes or some specified node when initialise my json data?
To Oleg: thanks for your demo,but I can't visit that page! - -!
Then,I show you my javascript code,maybe you can find some problems:
$(function () {
$('#list').jqGrid({
url: 'SvcDept.ashx',
ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
datatype: 'json',
mtype: 'GET',
treeGrid: true,
treeGridModel: 'adjacency',
ExpandColumn: 'Name',
colNames: ['ID', 'Name', 'Director', 'ParentID'],
colModel: [
{ name: 'ID', index: 'ID', hidden: true, width: 1, key: true },
{ name: 'Name', index: 'Name', width: 200, fixed: true },
{ name: 'Director', index: 'Director', width: 100 },
{ name: 'ParentID', index: 'ParentID', hidden: true, width: 1 }
],
autowidth: true,
height: 'auto'
});
});
and My SvcDept.ashx:
public class SvcDept
{
public void ProcessRequest(HttpContext context)
{
var depts = context.Application["Departments"] as List<Department>;
var nodeid = context.Request["nodeid"];
var n_level = context.Request["n_level"];
Guid? deptID = nodeid != null ? new Guid(nodeid) : new Nullable<Guid>();
int level = n_level != null ? int.Parse(n_level) + 1 : 0;
var subDepts = depts.Where<Department>(x => x.ParentID == deptID).ToList<Department>();
var data = new
{
page = 1,
total = 1,
records = subDepts.Count,
rows = (from dept in subDepts
select new
{
cell = new[]
{
dept.ID.ToString(),
dept.Name,
dept.Director ,
dept.ParentID != null ? dept.ParentID.ToString() : "",
level.ToString(), //Level
deptID != null ? deptID.ToString() : "null", //ParentID
depts.Count<Department>(x => x.ParentID == dept.ID) == 0 ? "true":"false", //isLeaf
"true", //expanded
"false"//loaded
}
})
};
context.Response.ContentType = "application/json";
JavaScriptSerializer serializer = new JavaScriptSerializer();
context.Response.Write(serializer.Serialize(data));
}
public bool IsReusable
{
get
{
return false;
}
}
}
public class Department
{
public Guid ID { get; set; }
public string Name { get; set; }
public string Director { get; set; }
public Guid? ParentID { get; set; }
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
可能您的代码的其他部分存在一些问题。查看演示并与另一个 其中只有值
expanded
属性更改为true
。该节点将被扩展。如果您确实遇到问题,您应该将您的代码包含在问题的代码中。更新:您写道,访问演示时遇到一些问题,这有点奇怪。第一个演示来自答案。我在演示的代码中修改了
expanded
属性的一个值,将其更改为true
并且网格将加载扩展的我包含完整的代码“Cash “
项目。下面是演示的完整 HTML 代码:Probably you have some problems in other part of your code. Look at the demo and compare with another one where only the value of
expanded
property are changed totrue
. The node will be expanded. If you do have problems you should include your code in the code of your question.UPDATED: You wrote that you have some problem to access to the demos which is a little strange. The first demo is from the answer. I modified in the code of the demo just one value of
expanded
property are changed totrue
and the grid will be loaded with extended I includes the full code"Cash"
item. Below you find the full HTML code of the demo: