2013-06-12 6 views
1

Я передаю богатые, вложенные объекты домена для jqgrid для отображения в виде плоских строк данных. Я делаю это, потому что хочу избежать необходимости создания плоского объекта передачи данных Java для каждой сетки данных 100 ++ в моем приложении. Пример данные строки:JQGrid: colmodel name collision

<record> 
    <brand> 
    <description>The Brand</description> 
    <brandId>305</brandId> 
    </brand> 
    <description>The description</description> 
    <recordId>110</recordId> 
</record> 

К сожалению, это создает имена столкновения между 2-х элементами: столбец Описания бренда отображается нормально, но описание корневого столбец отображается как «Описание» каскадного («TheBrandThe описания»). Вот моя колонка модель:

colModel : 
    {name:'brand>description', index:"brand>brandId", 
     xmlmap:"brand>description",width:200}, 
    {name:'description', index:'description', xmlmap:"description", 
     editable:true, edittype:'text', width:500} 
] 

Как следует изменить модель колонки, так что нет никакого столкновения между 2 «описаниями»? Я попытался использовать xmlmap, но ничего не изменилось. Спасибо!

ответ

0

Что вы должны сделать, это следующее

  1. вы должны начать с xmlmap> символа, чтобы указать путь от корня элемента XML.
  2. вы должны использовать значения name свойств colModel, которые соответствуют именам свойств. Например, name: 'brand' или name: "brand_description" вместо name:'brand>description'.
  3. Вы не должны указывать ни одного index для описания столбца. В случае, если jqGrid скопирует внутренне значение name на index.

The demo показать результаты. Он использует

colNames: ["brandId", "brand description", "description", "recordId"], 
colModel: [ 
    { name: "brand_brandId", xmlmap: ">brand>brandId", key: true, width: 100}, 
    { name: "brand_description", xmlmap: ">brand>description", width: 200}, 
    { name: "description", xmlmap: ">description", editable: true, width: 500}, 
    { name: "recordId", width: 100} 
] 

Я добавил дополнительно key: true к определению ">brand>brandId", потому что я полагал, что значение является уникальным для каждого элемента, и он может быть использован в качестве ROWID. Вы можете выбрать id строк по другому пути.

+0

Спасибо, Олег! Эта часть не работала для меня: root: "> records", row: "> record" (в xmlReader), поэтому я удалил символы '>', но изменения в colModel работали нормально. Еще один вопрос, если все в порядке: что мне нужно изменить в colModel, если я решу использовать данные JSON вместо XML? – Pablo

+0

@ user2309409: Вы не разместили ** полный файл XML **, который вы используете, поэтому я не знаю, являются ли 'root:"> records ", row:"> record "' правильными настройками в вашем случае. В моем demo 'records' есть * root * элемент XML-файла и' record' root элемента XML. Я рекомендую использовать JSON вместо XML. Вам может понадобиться 'jsonmap:" brand.description "' вместо 'xmlmap:"> brand> description "'. – Oleg

+0

Хорошо, я проверю это. И вы правы, мой XML-файл имеет еще один уровень сверху. Еще раз спасибо за вашу помощь. – Pablo

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