1

我有这个问题,jqGrid中的treegrid在通过xml传递数据时忽略了最后一个选项(扩展节点或不扩展节点)。有人遇到过这个吗?有解决办法吗?也许是我的数据?这是产生问题的示例数据:

<rows>
    <page>1</page>
    <total>0</total>
    <records>4</records>
    <row id='2'>
            <cell>2</cell>
            <cell>Parent</cell>
            <cell>0</cell>
            <cell>NULL</cell>
            <cell>false</cell>
            <cell>true</cell>
          </row>
    <row id='1'>
            <cell>1</cell>
            <cell>Child 1</cell>
            <cell>1</cell>
            <cell>2</cell>
            <cell>true</cell>
            <cell>false</cell>
          </row>
    <row id='3'>
            <cell>3</cell>
            <cell>Child 2</cell>
            <cell>1</cell>
            <cell>2</cell>
            <cell>true</cell>
            <cell>false</cell>
          </row>
    <row id='4'>
            <cell>4</cell>
            <cell>Child 3</cell>
            <cell>1</cell>
            <cell>2</cell>
            <cell>true</cell>
            <cell>false</cell>
          </row>
</rows>
4

1 回答 1

1

在我看来,它更像是 TreeGrid 中的一个错误。不过,您可以通过向需要扩展的节点添加loaded: true属性来轻松解决问题。代码行和上面的一些行(参见此处)中的原因,其中loaded属性(和ldat[loaded])将是undefined,因此对于所有未定义的项目,ldat[expanded]将更改为。undefinedloaded

演示演示了解决方案。它使用您发布的 XML,但在项目<cell>true</cell>定义的末尾添加了额外的内容"Parent"

...
<row id='2'>
    <cell>2</cell>
    <cell>Parent</cell>
    <cell>0</cell>
    <cell>NULL</cell>
    <cell>false</cell>
    <cell>true</cell>
    <cell>true</cell> <!-- added the element for loaded: true -->
</row>
...

更新:我认为修复错误(最初在此处描述)的最简单方法是更改​​代码setTreeNode

ldat[expanded] = ((ldat[expanded] == "true" || ldat[expanded] === true) ? true : false) &&
    ldat[loaded];

到以下

ldat[expanded] = ((ldat[expanded] == "true" || ldat[expanded] === true) ? true : false) &&
    (ldat[loaded] || ldat[loaded] === undefined);

请参阅使用固定代码的相应演示。

于 2012-11-02T13:50:23.960 回答