请注意此问题仅与ExtJS相关,我知道如何对基本HTML执行相同操作。
我正在创建一个放在每个网格上的按钮,即“另存为excel”。很明显,我需要打开一个新窗口,我希望url将把我在网格上使用的过滤器(和排序)作为参数。
获取过滤器和排序并不难,我可以直接从商店获取它们,问题是我不知道如何打开窗口而不会被弹出窗口阻止程序阻止。 在html中,我应该使用目标为空白的表单,添加2个隐藏字段,其值为= filters数组和排序数组。然后,当您单击按钮时,将运行提交。这将打开一个传递给它的参数的新页面。
我不知道如何将我的按钮包含在一个不可见的形式(我总是使用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");
}
});
所以基本上我目前没有代码。好吧,我已经建立了所有的网格,远程过滤等等但是为了构建这个目的它没用了
答案 0 :(得分:3)
如果您想要发出GET请求,那么当然会有一个包含href
和target
属性的简单按钮/链接。这是一个小小的工作示例:
Ext.create('Ext.Button', {
text: 'Click me',
href: 'http://google.com',
target: '_blank',
renderTo: Ext.getBody()
});
href配置已记录但目标不是,但如果您查看source code(请参阅renderTpl和getTemplateArgs),您会看到它按预期工作。
如果你想要一个POST请求,那么你是正确的,在一个也支持target
属性并且可以作为常规工作的FormPanel中包含你的按钮(或者对于你来说也更方便)如果将standardSubmit
设置为true,则为form(同步请求,无XHR)。
请注意,如果您需要一个触发文件下载的操作,您实际上不需要打开一个新窗口(显式或通过target="blank"
),您可以使用当前的浏览器窗口,浏览器才会启动下载文件(如果MIME类型合适),而不实际导航离开当前页面。
如果您还有其他问题,请与我们联系。
答案 1 :(得分:1)
这就是我所做的。我使用了一个普通的extjs窗口并使用了html
配置选项,并在其中放置了一个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)
});
解决了弹出窗口阻止程序问题,并且传递参数更加容易。