提交表单后未调用 OnDemandGrid Dojo dgrid-select 事件侦听器
OnDemandGrid Dojo dgrid-select event listener not called after Form is submitted
我有一个 dgrid/OnDemandGrid。我还有一个用于下载文件(XLSX、XLS 和 PDF 文件类型)的下拉菜单。
点击下拉菜单项,下载文件。
下载后,在 OnDemandGrid 上为 'dgrid-select' 事件注册的侦听器根本不会被调用。
dgrid-select 如果未提交表单,则会调用事件侦听器,但我无法在不提交表单的情况下下载文件。
网格就是这样创建的。
this.gridBoundaries = new (declare([Grid, Selection, Pagination, ColumnHider, Keyboard, ColumnResizer, editor]))({
// use Infinity so that all data is available in the grid
//className: "dgrid-autoheight",
showHeader: true,
collection: self.memStore,
bufferRows: Infinity,
columns: columns,
selectionMode: "single",
pagingLinks: true,
pagingTextBox: true,
firstLastArrows: true,
rowsPerPage: 100,
pageSizeOptions: [100, 150, 200],
adjustLastColumn : true,
loadingMessage: 'Loading data...',
noDataMessage: 'No data.'
},this.domNode);
this.gridBoundaries.startup();
表单提交下载是在下面的代码片段中触发的
var formElement = dom.byId('exportForm');
if(formElement){
domAttr.set(formElement, "action", generateReportUrl);
domAttr.set(dom.byId("reportType"), "value", reportType)
domAttr.set(dom.byId("selectedSite"), "value", this.selectedSite.FAC_IDU)
domAttr.set(dom.byId("columnMetaData"), "value", columnMetaDatas)
domAttr.set(dom.byId("selectedMarketArea"), "value", this.selectedMarketArea.MRKT_AREA)
domAttr.set(dom.byId("tabSelected"), "value", isCustomer)
//domAttr.set(dom.byId("polygonJSON"), "value", this.polygonJSON)
domAttr.set(dom.byId("currentTimeZone"), "value", this.currentTimeZone)
domAttr.set(dom.byId("zoneId"), "value", this.zoneId)
formElement.submit();
}
我认为您可能 运行 遇到了一个奇特且非常可怕的 IE 故障,其中事件侦听器绑定在 "non-navigation" 发生后被打乱 - 我的意思是导航实际上并未发送浏览器 window 到一个新位置,例如<a href="javascript:...">
链接...和文件下载。
https://connect.microsoft.com/IE/feedback/details/802397/ie9-ie10-events-can-be-sent-to-the-wrong-listeners 更具体地描述了这个问题。 (我很确定我也在 IE11 中看到过它。)
为了至少确认这是否是您 运行 的目标,我建议将 target="_blank"
添加到表单元素,这样它在技术上就不会导航当前 window.
我有一个 dgrid/OnDemandGrid。我还有一个用于下载文件(XLSX、XLS 和 PDF 文件类型)的下拉菜单。
点击下拉菜单项,下载文件。
下载后,在 OnDemandGrid 上为 'dgrid-select' 事件注册的侦听器根本不会被调用。
dgrid-select 如果未提交表单,则会调用事件侦听器,但我无法在不提交表单的情况下下载文件。
网格就是这样创建的。
this.gridBoundaries = new (declare([Grid, Selection, Pagination, ColumnHider, Keyboard, ColumnResizer, editor]))({
// use Infinity so that all data is available in the grid
//className: "dgrid-autoheight",
showHeader: true,
collection: self.memStore,
bufferRows: Infinity,
columns: columns,
selectionMode: "single",
pagingLinks: true,
pagingTextBox: true,
firstLastArrows: true,
rowsPerPage: 100,
pageSizeOptions: [100, 150, 200],
adjustLastColumn : true,
loadingMessage: 'Loading data...',
noDataMessage: 'No data.'
},this.domNode);
this.gridBoundaries.startup();
表单提交下载是在下面的代码片段中触发的
var formElement = dom.byId('exportForm');
if(formElement){
domAttr.set(formElement, "action", generateReportUrl);
domAttr.set(dom.byId("reportType"), "value", reportType)
domAttr.set(dom.byId("selectedSite"), "value", this.selectedSite.FAC_IDU)
domAttr.set(dom.byId("columnMetaData"), "value", columnMetaDatas)
domAttr.set(dom.byId("selectedMarketArea"), "value", this.selectedMarketArea.MRKT_AREA)
domAttr.set(dom.byId("tabSelected"), "value", isCustomer)
//domAttr.set(dom.byId("polygonJSON"), "value", this.polygonJSON)
domAttr.set(dom.byId("currentTimeZone"), "value", this.currentTimeZone)
domAttr.set(dom.byId("zoneId"), "value", this.zoneId)
formElement.submit();
}
我认为您可能 运行 遇到了一个奇特且非常可怕的 IE 故障,其中事件侦听器绑定在 "non-navigation" 发生后被打乱 - 我的意思是导航实际上并未发送浏览器 window 到一个新位置,例如<a href="javascript:...">
链接...和文件下载。
https://connect.microsoft.com/IE/feedback/details/802397/ie9-ie10-events-can-be-sent-to-the-wrong-listeners 更具体地描述了这个问题。 (我很确定我也在 IE11 中看到过它。)
为了至少确认这是否是您 运行 的目标,我建议将 target="_blank"
添加到表单元素,这样它在技术上就不会导航当前 window.