1

この質問はExtJSに関するものであることに注意してください。私は、基本的なHTMLで同じことを行う方法を知っています。

「Excelとして保存」する各グリッド上に配置されるボタンを作成しています。明らかに、新しいウィンドウを開く必要があり、グリッドで使用していたフィルター(および並べ替え)をURLがパラメーターとして使用するようにします。

フィルタの取得と並べ替えは難しくありません。ストアから直接取得できます。問題は、ポップアップブロッカーによってブロックされずにウィンドウを開く方法がわからないことです。htmlでは、ターゲットが空白のフォームを使用し、values =filterarrayとsortarrayの2つの非表示フィールドを追加する必要がありました。次に、ボタンをクリックすると、送信が実行されます。これにより、パラメータが渡された新しいページが開きます。

ボタンを非表示のフォームで囲む​​方法がわかりません(私は常にform.Panelを使用していました)。特に、そのフォームに気づきました。Panelにはターゲットプロパティがないため、_blankをどこに設定できるかわかりません。価値。

また、値としてtarget = _blankを持つボタンをExtJSで作成する可能性はありますか?明らかに、Aタグを介して構築する必要があります。

ボタンのアクチュレイは次のように単純であることに注意してください。

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リクエストを作成する場合は、もちろん、属性を含む単純なボタン/リンクでhref十分targetです。これが少し実用的な例です:

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

href構成は文書化されていますが、ターゲットは文書化されていません。ただし、ソースコード(renderTplおよびgetTemplateArgsを参照)を見ると、期待どおりに機能していることがわかります。

targetPOSTリクエストが必要な場合は、属性をサポートし、通常のフォーム(同期リクエスト、XHRなし)として機能できるFormPanelでボタン(または、グリッドの方が便利な場合はグリッドも)を囲むことができます。 trueに設定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 に答える