我正在使用dgrid,如下所示:
query_grid: function(json_query, target, select){
var self = this;
require(["dojo/_base/declare",
"dgrid/Grid",
"dgrid/extensions/ColumnResizer",
"dgrid/Selection",
"dgrid/selector",
"dgrid/extensions/DijitRegistry",
"dgrid/extensions/Pagination"],
function(declare, Grid, ColumnResizer, Selection, selector, DijitRegistry, Pagination){
util.destroy("grid_"+json_query.path);
var columns = {};
if (select){
columns.widget = selector({
id: "widget",
label: " ",
selectorType: "radio",
resizeable: false,
width: 30});
}
var data = json_query.data;
for (var i=0; i<data.keys.length; i++){
columns[data.keys[i]] = {label: util.slice_path(data.keys[i], 2)};
}
var grid = new (declare([Grid, ColumnResizer, Selection, DijitRegistry, Pagination]))({
id: "grid_"+json_query.path,
columns: columns,
store: new Memory({data: data.records}),
selectionMode: select?"single":"none",
pagingLinks: 1,
pagingTextBox: true,
firstLastArrows: true
});
dojo.place(grid.domNode, target, 'last');
grid.refresh();
}
);
return json_query.path;
}
但是当我查看结果时,它总是显示少于一个记录,直到我点击列标题(导致排序),然后显示所有记录。任何人都可以解决或帮助解决方案/解决方法吗?
答案 0 :(得分:2)
将grid.refresh()
替换为grid.startup()
。
如果实例在文档流程中创建后,dgrid将自动调用startup
。这不是这里的情况因为你之后放置它,所以你需要在流程之后调用startup
来告诉它它可以执行几何敏感操作。
在不调用startup
的情况下,resize
最初从未被调用过。因此,网格无法正确计算页眉/页脚的高度,并且您的10行中的一行正在进行模糊处理。排序时会修复它,因为dgrid/Grid
的{{1}}方法调用_setSort
,以防标题行的大小因排序箭头的位置而发生变化。
在这种情况下,您可以将resize
替换为refresh
是因为startup
无论如何都会调用startup
。