1

请注意,这个问题只是关于 ExtJS,我知道如何对基本的 HTML 做同样的事情。

我正在创建一个按钮,该按钮放置在“另存为 excel”的每个网格上。显然,我需要打开一个新窗口,并且我希望 url 将我在网格上使用的过滤器(和排序)作为参数。

获取过滤器和排序并不难,我可以直接从商店获取它们,问题是我不知道如何打开窗口而不被弹出窗口阻止程序阻止。在 html 中,我应该使用目标空白的表单,添加 2 个隐藏字段,其中包含 values = filters 数组和 sort 数组。然后,当您单击按钮时,将运行提交。这将打开一个新页面,其中传递了参数。

我不知道如何将我的按钮包含在一个不可见的表单中(我总是使用 form.Panel),特别是我注意到 form.Panel 没有任何目标属性,所以我不知道我可以在哪里设置我的 _blank价值。

另外,是否有可能在 ExtJS 中创建一个具有 target=_blank 作为值的按钮?显然它应该通过 A 标签构建。

请注意,按钮 actullay 很简单:

var excelPrint = Ext.create('Ext.Action', {
  cls: 'icon-excel',
  handler: function() {
    // TODO: Open a new window and filter it same as current grid, the filtered data is an xlsx
    alert("Funzionalità inattiva");
  }
});

所以基本上我目前没有代码。好吧,我已经构建了所有网格,带有远程过滤等,但对于构​​建它来说没有用

4

2 回答 2

3

如果您想发出 GET 请求,那么当然可以使用带有hreftarget属性的简单按钮/链接。这是一个小的工作示例:

Ext.create('Ext.Button', {
    text: 'Click me',
    href: 'http://google.com',
    target: '_blank',
    renderTo: Ext.getBody()
});

href配置已记录,但目标未记录,但是如果您查看源代码(请参阅 renderTpl 和 getTemplateArgs),您会发现它按预期工作。

如果您想要一个 POST 请求,那么您将按钮(或者如果对您更方便的话也可以是网格)包含在一个也支持该target属性并且可以作为常规表单工作的 FormPanel 中是正确的(同步请求,没有 XHR)如果你设置standardSubmit为真。

请注意,如果您需要触发文件下载的操作,您实际上不需要打开新窗口(显式或通过target="blank"),您可以使用当前浏览器窗口,浏览器将开始下载文件(如果 MIME 类型是合适的)而不实际离开您当前的页面。

如果您还有其他问题,请告诉我。

于 2012-09-09T14:00:43.867 回答
1

这就是我所做的。我使用了一个普通的 extjs 窗口并使用了htmlconfig 选项并像这样在其中放置了一个 iframe

Ext.Window({
//other config
html: String.format('<iframe id="report" src="rest/service/report?accountId={0}&caseId={1}" width="780" height="580" />', accountId, caseId)
});

这解决了弹出窗口阻止程序的问题,并且传递参数要容易得多。

于 2012-09-09T07:37:43.140 回答