2012-03-13 13 views
0

Grailsの学習を始めたばかりです。私は現在Exportプラグインを使っています。私はGSPと送信ボタンにテーブルを持っています。ボタンをクリックすると、テーブルデータ(ドメインクラスのインスタンス)が.csvファイルにエクスポートされます。誰もこれで私を助けることができますか?私は、ドメインモデルのインスタンスIDを保持するテーブルに、jQueryでidをすべて取得し、AjaxでJSONとしてコントローラのアクションに送信し、exportServiceに渡すよりも、隠しフィールドを持つことができると推測しています。 $ .ajaxメソッドなどを使うべきですか?それともアヤックスなしでこれを行う方法がありますか?コントローラへのGSPテーブルデータの送信

私はGrailsとjQuery/Ajaxの両方に新しいので、いくつかの簡単な例が素晴らしいでしょう。ありがとう。

EDIT:

def results = bookCriteria.list(max: params.max as Integer, offset: params.offset as Integer) { 
     and { 
       'eq'("category","history") 
       ne("status", "Rented") 

      } 

    } 
if(params?.format && params.format != "html"){ 
     response.contentType = ConfigurationHolder.config.grails.mime.types[params.format] 
     response.setHeader("Content-disposition", "attachment; filename=report.${params.extension}") 

     exportService.export(params.format, response.outputStream, results, [:], [:]) 

    } 

私はコントローラでこのような何かを持っています。しかし、最初の50行しか返さない(ページングのため)。ページングを管理するが、すべての対応する行をエクスポートする方法

答えて

0

ユーザーがテーブルの値を変更できる場合は、テーブルからサーバーにデータを送信するだけで済みます。これは本当にあなたのユースケースですか?そうでなければ、AJAXを使う必要はありません。

description of the pluginをご覧ください。そこにいくつかの基本的な例があります。

一般に、簡単なリクエストを行い、エクスポートするデータを取得し、に電話し、responseをプラグインページの説明に従って修正します。

プラグインのページから

Basicの例:

def list = { 
    if(!params.max) params.max = 10 

    if(params?.format && params.format != "html"){ 
     response.contentType = ConfigurationHolder.config.grails.mime.types[params.format]  
     response.setHeader("Content-disposition", "attachment; filename=books.${params.extension}") 

     exportService.export(params.format, response.outputStream,Book.list(params), [:], [:]) 
    } 
    [ bookInstanceList: Book.list(params) ] 
} 

編集:あなたがでif(!params?.format || params.format == "html")を置き換えることができ

def results = bookCriteria.list { 
    and { 
     'eq'("category","history") 
     ne("status", "Rented") 
    } 

    if(!params?.format || params.format == "html") { 
     maxResults(params.max.toInteger()) 
     firstResult(params.offset.toInteger()) 
    } 
} 

:ここ は、エクスポートの場合はすべての書籍を得ることができる方法をいくつかのコードですすべての結果をリストしたくないことを示すその他の条件。希望が役立ちます...

+0

はい、すべてのドメインクラスインスタンスをエクスポートしたくない場合はどうしますか?たとえば、何らかのフィルタリングをGSPテーブルで行った場合、私のドメインクラスインスタンスは一部しかありません。何か不足していますか? – johndoe

+0

これは単なる例です。 'Book.list(params)'をインスタンスの他のリストで置き換えることができます。エクスポートするインスタンスのリストを作成するには、すべての種類のgroovy/grailsメソッド([criteria](http://grails.org/doc/latest/ref/Domain%20Classes/createCriteria.html)、[query] (http://grails.org/doc/latest/ref/Domain%20Classes/executeQuery.html)、[finder](http://grails.org/doc/latest/ref/Domain%20Classes/findAllBy.html)など)を使用して、却下したインスタンスを選択します。 GSPテーブルのインスタンスをどのようにフィルタリングしましたか? – aiolos

+0

私はdef bookList = Book.executeQuery( "select ...")のようなものを実際に使って、これをGSPに渡しました[bookInstanceList:bookList、bookInstanceTotal:bookList.count()] – johndoe

関連する問題