Во-первых, я использую dojo 1.1.0 и dgrid 0.4.0. Я создаю страницу с несколькими dgrids на ней. Одна сетка, в частности, должна загружать данные JSON из URL-адреса и отображать их. В настоящее время он отлично работает с хранилищем RequestMemory. однако это хранилище «памяти». в то время как это может быть тривиально для некоторых других, мне нужно найти способ загрузить данные, как это делается сейчас, а затем добавить кнопку обновления на экран, которая вызывает необходимые функции/методы для перезагрузки данных из URL-адреса и повторно заполнить dgrid.
Данные JSON поступают из URL-адреса, отформатированного следующим образом:
[{"id":1,"name":"trans1","username":"trans1","status":"Available","inactive":"no","checkedout":"false","details":"","assignedNum":"0","completedNum":"0","avgTime":"00:00","aaOn":true},{"id":2,"name":"trans2","username":"trans2","status":"Available","inactive":"no","checkedout":"false","details":"","assignedNum":"0","completedNum":"0","avgTime":"00:00","aaOn":true},{"id":3,"name":"trans3","username":"trans3","status":"Available","inactive":"no","checkedout":"false","details":"","assignedNum":"0","completedNum":"0","avgTime":"00:00","aaOn":false},{"id":4,"name":"trans4","username":"trans4","status":"Available","inactive":"no","checkedout":"false","details":"","assignedNum":"0","completedNum":"0","avgTime":"00:00","aaOn":false},{"id":5,"name":"trans5","username":"trans5","status":"Available","inactive":"no","checkedout":"false","details":"","assignedNum":"0","completedNum":"0","avgTime":"00:00","aaOn":false},{"id":6,"name":"trans6","username":"trans6","status":"Available","inactive":"no","checkedout":"false","details":"","assignedNum":"0","completedNum":"0","avgTime":"00:00","aaOn":false}]
Require, который вы увидите ниже, на самом деле содержит гораздо больше, чем просто эту сетку... отсюда и все лишнее.
Мне не нужно обновлять локальный магазин, и я не хочу отслеживать изменения URL-адреса. Я просто хочу иметь возможность перезагружать данные с URL-адреса по требованию.
Вот код, который я сейчас использую для начальной загрузки сетки (работает) и кнопки обновления, которая мне так нужна для работы.
require([ 'dojo/store/Observable' ,'dijit/Dialog', 'dijit/form/Select', 'dijit/form/MultiSelect', 'dijit/form/TextBox', 'dijit/layout/TabContainer', 'dijit/layout/ContentPane','dojo/request', 'dojo/request/xhr', 'dijit/form/ToggleButton', 'dijit/form/Button', 'dojo/parser', 'dojo/_base/declare', 'dgrid/Grid', 'dgrid/Selection', 'dgrid/Editor', 'dgrid/extensions/ColumnHider', 'dgrid/extensions/Pagination', 'dstore/RequestMemory', 'dijit/form/Select', 'dijit/registry','dojox/data/XmlStore', 'dojo/domReady!'], function (Observable, Dialog, Select, MultiSelect, TextBox, TabContainer, ContentPane, request, xhr, ToggleButton, Button, parser, declare, Grid, Selection, Editor, ColumnHider, Pagination, RequestMemory, Select, registry, XmlStore) {
//workers dgrid
var workersStore = new RequestMemory({ target: '/autoAssign/getWorkers.aa?TASKTYPE=transport&INACTIVE=FALSE' });
var workerGrid = new (declare([ Grid, Selection, Pagination, Editor, ColumnHider ]))({
collection: workersStore,
className: 'dgrid-autoheight',
id: 'workerGrid',
rowsPerPage: 6,
columns: {
name: 'Name',
username: {
label: 'username',
hidden: true
},
status: 'Status',
assignedNum: 'Assigned',
completedNum: 'Completed',
avgTime: 'Average',
aaOn: {
label: 'Auto Assign',
editor: 'checkbox',
}
}
}, 'gridNode');
workerGrid.on("dgrid-datachange",function(evt) {
var row = workerGrid.row(evt);
if (evt.cell.column.id == 'aaOn') {
var promise = request('/autoAssign/setUserAaStatus.aa?USERNAME='+row.data.username+'&TASKTYPE=transport&STATUS='+evt.value);
}
});
workerGrid.startup();
//Add refresh Button
var addRefreshButton = new Button({
label: "Refresh",
style: 'float:right;',
onClick: function(){
var promise = workersStore.fetch();
var result = promise.then(function(data){
workerGrid.set("collection", workersStore);
workerGrid.refresh();
alert("refresh pushed");
});
}
}, "refresh").startup();
}
[{"id":1,"name":"trans1","username":"trans1","status":"Available","inactive":"no","checkedout":"false","details":"","assignedNum":"0","completedNum":"0","avgTime":"00:00","aaOn":true},{"id":2,"name":"trans2","username":"trans2","status":"Available","inactive":"no","checkedout":"false","details":"","assignedNum":"0","completedNum":"0","avgTime":"00:00","aaOn":true},{"id":3,"name":"trans3","username":"trans3","status":"Available","inactive":"no","checkedout":"false","details":"","assignedNum":"0","completedNum":"0","avgTime":"00:00","aaOn":false},{"id":4,"name":"trans4","username":"trans4","status":"Available","inactive":"no","checkedout":"false","details":"","assignedNum":"0","completedNum":"0","avgTime":"00:00","aaOn":false},{"id":5,"name":"trans5","username":"trans5","status":"Available","inactive":"no","checkedout":"false","details":"","assignedNum":"0","completedNum":"0","avgTime":"00:00","aaOn":false},{"id":6,"name":"trans6","username":"trans6","status":"Available","inactive":"no","checkedout":"false","details":"","assignedNum":"0","completedNum":"0","avgTime":"00:00","aaOn":false}]
Любая помощь будет принята с благодарностью. Раньше я делал это со старой сеткой данных Dojo и просто не могу понять, что мне здесь не хватает.