2012-11-02 9 views
1

У меня есть эта проблема, treegrid в jqGrid игнорирует последнюю опцию (расширенный узел или нет) при передаче данных через xml. Кто-нибудь столкнулся с этим? Есть ли решение? Может быть, мои данные? Вот пример данных, из-за которых возникает проблема: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> 

ответ

1

Мне кажется больше как ошибка в TreeGrid. Тем не менее, вы можете легко исправить проблему на , добавив loaded: true к узлу, который необходимо развернуть. Причина в the line кода и некоторые выше строки (см here), где loaded свойство (и ldat[loaded]) будет undefined и поэтому ldat[expanded] будет изменено на undefined для всех элементов, не имеющие loaded определены.

The demo продемонстрировать решение. Он использует 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> 
... 

ОБНОВЛЕНО: Я думаю, что самый простой способ исправить ошибку (первоначально описанный here) будет изменить the line кода 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); 

См. the corresponding demo, используя фиксированный код.

+0

Спасибо! Я нашел эту старую ошибку с параметром нагрузки, но создатель сказал, что она разрешена .. несколько месяцев назад. Я не понял, как применить обходной путь в новой версии, чтобы попробовать, потому что исходный код изменился, но он действительно работает. Благодаря! –

+0

@MihalisBagos: Добро пожаловать! Я попытаюсь немного проанализировать код 'setTreeNode' и опубликую свое предложение о том, как исправить ошибку в trirand. Если я это сделаю, я сообщу вам об этом. – Oleg

+0

@MihalisBagos: Я обновил свой ответ с предложением об исправлении. – Oleg

 Смежные вопросы

  • Нет связанных вопросов^_^