【问题标题】:jqgrid treegrid setup to load child on demand(on expansion) for json datajqgrid treegrid 设置为 json 数据按需加载子项(扩展时)
【发布时间】:2012-03-15 07:48:18
【问题描述】:

我想在展开时加载子节点。在文档中,他们提到当单击扩展图标时,具有 level、isexpanded 等值的请求将被发送到服务器。但是对我来说,当我展开任何节点时,都没有将 url 发送到服务器。我必须做哪些设置才能使其正常工作。

我现有的设置如下:-

jQuery("#tree").jqGrid({
url:'getTasks.htm',
datatype: "json",
mtype:'GET',
colNames: ["id", "no.", "name"],
colModel: [
    {name:'id',width: 30, editable:false, align:"right",sortable:false, hidden: true, key: true},
    {name:'no',width:80, editable:false, align:"left", sortable:true, sorttype:"int"},
    {name:'name', width:150, editable:true, sortable:true, sorttype:"text"}

],

treeGridModel:'adjacency',
treeGrid: true,
gridview:true,
treedatatype: 'json',
cellEdit: true,
ExpandColumn:'name',
cellsubmit : 'clientArray',

jsonReader : {
    root:"listTasks",
    cell:"",
    id: "id",
    repeatitems:false

}

示例 JSON 数据是:-

[Object { id="16731", no="1", name="name1", level="0", parent="null", isLeaf="false", expanded="false", loaded="true", icon="ui-icon-triangle-1-s"}, Object { id="16737", no="2", name="name2", level="0", parent="null", isLeaf="false", expanded="false", loaded="true", icon="ui-icon-triangle-1-s"}, Object { id="18846", no="3", name="name3", level="0", parent="null", isLeaf="false", expanded="false", loaded="true", icon="ui-icon-triangle-1-s"}, Object { id="-1", no="(new)", parent="null",level="0", isLeaf="false", expanded="false", loaded="true", icon="ui-icon-triangle-1-s"}]

【问题讨论】:

    标签: jquery jqgrid load treegrid


    【解决方案1】:

    您可以在 TreeGrid 的文档(参见 here)中找到树参数:nodeidparentidn_level 将在 treeGridModel:'adjacency' 的情况下在扩展节点时发送到服务器.不应发送“url”。

    哪个值具有loaded 隐藏列的值也很重要。如果在第一次加载时填写 TreeGrid 中的所有数据,则应将 true 放在列中,在扩展节点上不会向服务器发送请求。

    【讨论】:

    • Oleg : 正在等待您的回复..!!我已经检查了您提供的链接。这意味着要加载子扩展,我必须使用 jqgrid 的 postdata 选项。在示例中,postdata 具有 rc.id、rc.n_level 等。我如何获得 rc(扩展行 ID)。我需要在点击图标时触发点击事件吗??
    • @mayur:您不需要使用postData 选项。参数nodeidparentidn_level将由jqGrid自动添加。您应该在服务器端的代码中实现测试是否发送nodeidparentidn_level 参数。如果没有发送服务器应该返回顶级节点。如果确实定义了三个参数,则您必须仅返回节点nodeid 的子节点。无需实现其他点击触发。
    • 你能举个例子吗?
    • @mayur:您需要在服务器端的代码。您使用什么语言和技术?
    • @mayur:我不使用 Java,也不使用 spring,但我在搜索“jqGrid”和“spring”(the page)时找到的第一页似乎对于'getTasks.htm' 调用的服务器方法,应该只使用像@RequestParam("nodeid") 这样的前缀。在这种情况下,您将获得 jqGrid 发送的所有参数的值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    相关资源
    最近更新 更多