Я только начал использовать dgrid и, просматривая образец dTunes, не могу найти идентификатор, связанный с каждой строкой в списке. С моей стороны это довольно полезно, но как мне также получить идентификатор, который я отправил из источника данных?
define([
'require',
'dgrid/List',
'dgrid/OnDemandGrid',
'dgrid/Selection',
'dgrid/Keyboard',
'dgrid/extensions/ColumnHider',
'dojo/_base/declare',
'dojo/_base/array',
'dojo/Stateful',
'dojo/when',
'dstore/RequestMemory',
'put-selector/put',
'dojo/domReady!'
], function (require, List, Grid, Selection,
Keyboard, Hider, declare, arrayUtil, Stateful,
when, RequestMemory, put) {
var cstsNode = put(listNode, 'div#cstsCars');
...
var cstsList = new TunesList({}, cstsNode);
var dataCSTS = new RequestMemory({ target: require.toUrl('./dataCSTS.json') });
...
dataCSTS.fetch().then(function (cars) {
cstsCars = arrayUtil.map(cars, pickField('Description'));
cstsCars.unshift('All (' + cstsCars.length + ' CSTS Cars' + (cstsCars.length !== 1 ? 's' : '') + ')');
cstsList.renderArray(cstsCars);
});
...
cstsList.on('dgrid-select', function (event) {
var row = event.rows[0];
console.log(row.id); // shows row number. How do I get the real id or other fields?
console.log(row.data); // shows row text that is displayed ("sample text 1")
console.log(row.data.id); // undefined
});
Вот фрагмент примера данных, который я предоставляю:
[{"id":"221","Description":"sample text 1"},
{"id":"222","Description":"sample text 2"},
{"id":"223","Description":"sample text 3"}]
Я хотел бы увидеть идентификатор. Вместо этого row.id возвращает 1,2 и 3, т.е. номера строк (или id созданного dgrid?).
row.data
возвращает фактические данные, хранящиеся в массиве объектов, которые могут соответствовать или не соответствовать данным, отображаемым в сетке. Трудно понять, чего вы пытаетесь достичь. - person frank   schedule 16.03.2015id
будет в объектеdata
. то естьconsole.log (row.data.id)
, а неrow.id
.row.id
— это внутреннее представление dGrid. - person frank   schedule 16.03.2015row.data
? Если это строка JSON, вам нужно преобразовать ее в объект массива JSON и использовать его в качестве данных для сетки. - person frank   schedule 16.03.2015var data = [{"id":"221","Description":"sample text 1"}, {"id":"222","Description":"sample text 2"}, {"id":"223","Description":"sample text 3"}];
- person frank   schedule 16.03.2015cstsReasons = arrayUtil.map(reasons, pickField('Description'));
создает только массив объектов с полемDescription
. то есть `[{Описание: образец текста 1}, {Описание: образец текста 2}, {Описание: образец текста 3}]` Который затем передается dGrid для рендеринга. Вам нужно построить хранилище памяти, где будут храниться все данные, а не только их часть. - person frank   schedule 16.03.2015