Dojo 如何在Dgrid selection mixin中获取选定行的列表
我正在Dgrid ondemandgrid中使用选择器和选择混合。我正在使用复选框作为选择器。下面是我的问题Dojo 如何在Dgrid selection mixin中获取选定行的列表,dojo,grid,dgrid,Dojo,Grid,Dgrid,我正在Dgrid ondemandgrid中使用选择器和选择混合。我正在使用复选框作为选择器。下面是我的问题 如何在html按钮单击时获取javascript中选中行的列表?我知道有dgrid选择和取消选择事件,但我想要按钮单击事件中所有选中行的列表 目前,如果我在任何位置单击一行,复选框都会被选中。但我只想在单击复选框时选择该行。如何实现这一点 这是我的密码 require([ "dgrid/OnDemandGrid", "dojo/s
require([
"dgrid/OnDemandGrid",
"dojo/store/JsonRest",
"dojo/dom",
"dojo/dom-style",
"dojo/_base/declare",
"dgrid/extensions/ColumnResizer",
"dgrid/Selection",
"dgrid/selector"
], function (OnDemandGrid,JsonRest,dom,domStyle,declare,ColumnResizer,Selection, selector) {
var Layout = [
selector({ label: selector({}), selectorType: "checkbox" }),
{field: 'srno',label: 'Sr No'},
{field: "Name",label: "name"}
];
jsonstore = new JsonRest({target: url,idProperty: "srno"});
grid = new(declare([OnDemandGrid,ColumnResizer,Selection]))({
store: jsonstore,
columns: Layout,
minRowsPerPage : 40,
maxRowsPerPage : 40,
keepScrollPosition : true,
allowSelectAll: true,
loadingMessage: "Loading data...",
noDataMessage: "No results found."
}, "grid");
domStyle.set(dom.byId("grid"),"height","210px");
grid.startup();
grid.on("dgrid-select", function(event){
//
});
grid.on("dgrid-deselect", function(event){
//
});
});
以下是您问题的解决方案:
var Layout = [
selector({ label: '', sortable: false}),
{field: 'srno',label: 'Sr No'},
{field: "Name",label: "name"}
];
jsonstore = new JsonRest({target: url,idProperty: "srno"});
grid = new(declare([OnDemandGrid,ColumnResizer,Selection]))({
store: jsonstore,
columns: Layout,
minRowsPerPage : 40,
maxRowsPerPage : 40,
selectionMode: "none",
deselectOnRefresh: false,
keepScrollPosition : true,
allowSelectAll: true,
loadingMessage: "Loading data...",
noDataMessage: "No results found."
}, "grid");
new Button({
label: "Ok",
onClick: function () {
// here you can use grid.selection to get the list of selected rows.
// it is an object with { 'rowid': true} format for example, like below
array.forEach(grid.store.data, function (item) {
if (grid.selection[item.id]) {
//your code to handle this selected item
}
});
})
}, 'button');
对于1:声明一个
var选择=[]代码>
那么
并将其拼接到dgrid取消选择上
然后单击按钮访问阵列
对于2:使用selectionMode:“无”定义网格,
从文档中:可以获取此处理程序中的选定行。
selectedRows变量为您提供网格中的所有选定项
window.grid = new (declare([Grid, ColumnResizer, Selection]))({
store: jsonstore,
columns: Layout,
minRowsPerPage: 40,
maxRowsPerPage: 40,
keepScrollPosition: true,
allowSelectAll: true,
loadingMessage: "Loading data...",
noDataMessage: "No results found."
}, "grid");
window.grid.on("dgrid-select", function (event) {
var selectedRows = event.rows;
});
这不适用于json rest存储,因为它没有属性“.data”。json rest存储不一定从服务器下载了所有数据。需要仔细测试grid.selection数组(selected中的行)中是否存在数据,项目可以位于选择数组中,其值为false表示未选择该项目。还需要小心处理大型数据集,因为网格中的当前可视化表示可能不包含存储中的所有数据。此网格不是自动高度调整的,所以它将使用虚拟滚动,并且只渲染“视口”中的数据子集grid.selected数组仅包含已呈现行的选择状态(选择为true,未选择为false)。grid.isSelected(item)方法应用于测试是否选择了某个项目,此方法还考虑了列标题中尚未呈现项目的主复选框。带有代码的答案应说明代码的位置/用途(您更改了什么,如何使用它等)。对于取消选择的行===window.grid.on(“dgrid取消选择”,
this.grid.on(".dgrid-row:dblclick", function(vet) {
// your selected row
var row = self.grid.row(vet);
});
window.grid = new (declare([Grid, ColumnResizer, Selection]))({
store: jsonstore,
columns: Layout,
minRowsPerPage: 40,
maxRowsPerPage: 40,
keepScrollPosition: true,
allowSelectAll: true,
loadingMessage: "Loading data...",
noDataMessage: "No results found."
}, "grid");
window.grid.on("dgrid-select", function (event) {
var selectedRows = event.rows;
});