我正在使用 IBM Content Navigator 2.0.3 附带的 Dojo 和 dojo/gridx。
网格数据来自我自己的全局数组,我正在将其用于其他用途。
大多数时候,一切都很好。但有时行的显示顺序不正确。例如,它将显示行 {5, 0, 2, 3, 4, 1, 6, ...},而不是预期的顺序 {0, 1, 2, 3, 4, 5, 6...}。就像行以某种方式被“交换”一样。
我不知道是什么导致了这种行为。
当我在Chrome开发者工具中查看gridx商店时,顺序是可以的:
- this.grid.store:
add:ƒ ()
data:Array(11)
0:{mappedName: "FNOL Email.html", claimNumber: "K00000133690", description: "FNOL", documentType: "", contentRcvDate: "06/11/2018", …, "A1001001A18F11B80705D00000"}
1:{mappedName: "FNOLAck.msg", claimNumber: "K00000133690", description: "FNOL Acknowledge", documentType: "", contentRcvDate: "06/11/2018", …, "A1001001A18F11B80802G00002"}
2:{mappedName: "imagefile.gif", claimNumber: "K00000133690", description: "Claim FNOL for Smithers", documentType: "", contentRcvDate: "06/11/2018", …, "A1001001A18F11B80903A00004"}
3:{mappedName: "2-imagefile.gif", claimNumber: "K00000133690", description: "COR INS16", documentType: "", contentRcvDate: "06/11/2018", …, "A1001001A18F11B81002A00006"}
4:{mappedName: "MSOutlookMessage.msg", claimNumber: "K00000133690", description: "MSOutlookMessage", documentType: "", contentRcvDate: "06/11/2018", …, "A1001001A18F11B81056G00008"}
5:{mappedName: "MSWord.doc", claimNumber: "K00000133690", description: "signed medical authorization", documentType: "", contentRcvDate: "06/11/2018", …, "A1001001A18F11B81148F00010"}
6:{mappedName: "PDF Document.pdf", claimNumber: "K00000133690", description: "Incident Report", documentType: "", contentRcvDate: "06/11/2018", …, "A1001001A18F11B81228B00012"}
...
商店的索引顺序也正确:
idProperty:"cm8DocId"
index:
A1001001A18F11B80705D00000:0
A1001001A18F11B80802G00002:1
A1001001A18F11B80903A00004:2
A1001001A18F11B81002A00006:3
A1001001A18F11B81056G00008:4
A1001001A18F11B81148F00010:5
A1001001A18F11B81228B00012:6
...
但是网格上的行显示顺序不正确。
当我在 Chrome 开发者工具中查看 HTML 元素时(示例:
<div class="gridxRow" role="row" rowid="A1001001A18F11B81148F00010" rowindex="0"...>
),索引 5 显示为顶行,行索引 0。依此类推。
你知道为什么会发生这种情况吗?
对于故障排除有什么建议吗?
我从包含我的网格的 Dojo 小部件中清理了一些无关的“导入”......并且问题“消失了”:
define([
"dojo/_base/declare",
"dojo/_base/lang",
"dojo/_base/connect",
"dojo/dom-style",
"dijit/_WidgetBase",
"dijit/_TemplatedMixin",
"dijit/_Contained",
"dijit/_WidgetsInTemplateMixin",
"ecm/model/Request",
"dijit/layout/ContentPane",
"gridx/Grid",
//"gridx/core/model/cache/Sync",
"dojo/store/Observable",
"dojo/store/Memory",
"gridx/modules/select/Row",
"gridx/modules/extendedSelect/Row",
"gridx/modules/IndirectSelect",
"gridx/modules/RowHeader",
//"gridx/modules/ColumnResizer",
//"gridx/modules/SingleSort",
//"gridx/modules/move/Row",
"gridx/modules/VirtualVScroller",
"ecm/widget/dialog/BaseDialog",
//"ecm/widget/_MoveUpDownGridxMixin",
"ecm/widget/Button",
"ecm/widget/CheckBox",
"myPluginDojo/CustomDownloadDef",
"myPluginDojo/CustomPrintCCD",
"myPluginDojo/ManifestDef",
"dojo/text!./templates/ManifestGridWidget.html"
],
function (declare, lang, connect,domStyle, _WidgetBase, _TemplatedMixin, _Contained, _WidgetsInTemplateMixin,
Request, ContentPane, Grid, Observable, Memory, SelectRow, ExtendedSelectRow, IndirectSelect,
RowHeader, VirtualVScroller, BaseDialog, Button, CheckBox,
CustomDownloadDef, CustomPrintCCD, ManifestDef, template) {
return declare("myPluginDojo.ManifestGridWidget", [BaseDialog, _WidgetBase, _TemplatedMixin, _Contained, _WidgetsInTemplateMixin], {
...
<= Note the commented out entries.
即使我的代码没有明确USING其中任何一个...从小部件定义(并且大概是从运行时环境)中删除不需要的“导入”似乎可以解决问题(?)