提交表单后未调用OnDemandGrid Dojo dgrid-select事件侦听器

阿米特·杜贝(Amit Dube)

我有一个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();
                }
肯·弗兰克罗(Ken Franqueiro)

我认为您可能会遇到一种特殊且非常糟糕的IE故障,即在发生“非导航”事件发生后事件监听器绑定被打乱了-这是指实际上并未将浏览器窗口发送到新位置的导航<a href="javascript:...">链接...和文件下载。

https://connect.microsoft.com/IE/feedback/details/802397/ie9-ie10-events-can-be-sent-to-the-wrong-listeners更具体地描述了该问题。(我很确定我也在IE11中也看到过它。)

为了至少确认这是否是您遇到的问题,建议您添加target="_blank"到form元素,以便从技术上讲它不会在当前窗口中导航。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章