Обработка непредсказуемых XML-данных в сетке ExtJS - PullRequest
0 голосов
/ 02 ноября 2010

Я использую ExtJS с XMLReader для отображения содержимого в GridPanel.Это прекрасно работает, однако мой источник XML имеет непредсказуемое количество повторяющихся элементов:

<beamline> 
  <technique>Tomography</technique> 
  <technique>Phase contrast imaging</technique> 
  <technique>Microdiffraction</technique> 
  <technique>General diffraction</technique> 
</beamline>

Может быть где угодно от 0-30 <technique> элементов.

В настоящее время я извлекаю их вручную в XMLReader с помощью параметра: nth (n):

{name: 'technique1', mapping: 'technique:nth(1)'},
{name: 'technique2', mapping: 'technique:nth(2)'},

, а затем помещаю их на панель в виде столбцов и объединяю их с помощью функции визуализации:

{header: "Technique", width: 100, dataIndex: 'technique1', sortable: false, renderer: techniques},
{header: "Technique2", dataIndex: 'discipline2', hidden: true},

function techniques(val, x, store){
  return '<ul><li>'+val+'</li><li>'+store.data.technique2+'</li></ul>';
}

но это, очевидно, слишком неуклюжий для масштабирования.Существует ли универсальный метод (в виде цикла или в стиле XPath) для достижения аналогичного результата?

1 Ответ

0 голосов
/ 11 ноября 2010

Я не использовал программу чтения XML, но у меня была похожая проблема, когда мне приходилось отображать строку, в которой столбец мог содержать N элементов.

Screenshot showing problem

Предполагая, что столбец методов содержит массив объектов, вы можете представить его как

function techniquesRenderer(val){
   var returnValue = '<ul>';
   for(var v in val){
     var foo = val[v];
     returnValue += '<li>' + foo.someProperty + '</li>';
   }
   return returnValue += '</ul>
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...