2013-07-26 3 views
2

Я использую Dojo 1.7, и у меня есть поле в datagrid, которое не может иметь значений, одного значения или нескольких значений. Я пытаюсь использовать данные, отформатированные таким образом:Dojo datagrid: несколько значений в одном поле

//data 
var store2 = new dojo.data.ItemFileReadStore({ 
    data: { 
     identifier: "id", 
     items: [ 
      {id: 1, 'personNames': ['Steve', 'Roy', 'Gary']}, 
      {id: 2, 'personNames': ''} //blank, no person names 

     ] 
    } 
}); 

//formater 
function formatPersonNames(value){ 
if (value == '') { 
    return '<p>Nobody here</p>'; 
} else { 
    return value + '<p style="margin-top:10px;">Check out the names above!</p>'; 
}; 
}; 

и это расположение:

// layout 
var layout2 = [ 
    {name: 'Display Order', field: 'id', noresize:true, 'width': '50px'}, 
    {name: 'Person Names', field: 'personNames', formatter: formatPersonNames, noresize:true} 
]; 

Вопрос заключается в том, что только первое имя «Стив» показывает вверх. Я попытался использовать значение [0] в качестве теста, и только первое сообщение появилось. Я новичок в таких вещах, поэтому любые советы будут оценены.

ответ

0

Проблема заключается в том, что функция форматирования получает только первый элемент массива. Dojo не обрабатывает массивы, как вам хотелось бы. Вам необходимо отформатировать данные перед переходом в додзё:

for (var i=0;i<items.length;i++) { 
    if (items[i].personNames instanceof Array) 
    items[i].personNames = items[i].personNames.join(', ') 
} 
Смежные вопросы