2012-03-12 14 views
0

私のコントローラにMapを作成し、それをViewに渡しました。データベースから値を取り込むドロップダウンリストがあります。値は "1"、 "2 "、" 3 "。最初のドロップダウンリストのように、マップ の値からドロップダウンを選択したい場合は、選択した値がマップの最初の要素になり、次のドロップダウンの場合は選択した値がマップの2番目の値になり、その上、私は、それが選択タブのvalue属性から行うことができると思いますが、すべてのヘルプは大歓迎ですか?マップの特定の値からドロップダウンで値を設定する

例えば、私は、コントローラで地図を作成した

を表示するためにそれを渡します
def Population={ 

def scores=["1":2,"2":3,"3":2,"4":2,"5":3,"6":1] 

return new ModelAndView("/scores/scoreCheck",scores) 

} 

とビューで私は私の要件は、地図スコアのキー「1」の値をドロップダウンリストを選択することです

<td><g:select name="SCBFScore" id="SCBFScore" from="${Decode.findAllByAttributeShortName('HASCORE1').collect{it.attributeCodeText}}" 
value="${scores?.get('1')}" noSelection="${['':'Select...']}" 
</td> 

下のようにそれを使用しています。ここで クエリ

が、私は最後のための彼の実行スコアのプレーヤーのための機能を持っている返信用[ "1"、 "2"、 "3"]は

感謝を返す

Decode.findAllByAttributeShortName('HASCORE1').collect{it.attributeCodeText} 

6年。私は、プレーヤーがスコアを表示または更新できるモジュールを持っていますが、全く新しいスコアを作成することはできません。彼のすべてのスコアのデータは、別のソースからロードする必要があります。アプリケーションがロードすると、彼が持っている最新のスコアをロードします。彼は1つだけスコアを出すことができるように "1"、 "2"、 "3"アプリケーションが最初に最後のスコアのデータを読み込むときに、ビュー内のスコアの値をプリセットしたいと思います。地図形式

でスコアを持っているので、私はマップ内のすべての6年間のスコアや店舗をexctractedコントローラで

例えば [「2012のスコア」:2011の「2」、[スコア: 012、2011年のスコア: '1'、[スコアの2010]: '2']など

2012年にプレーヤーのスコアは2 だから、ビューが読み込まれるとプリセットされます2012年の2とのコンボボックス、コンボボックスの価値1,2,3

従って2011年の場合 ビュープリセットのドロップダウンリスト3へのAR 2011は、コンボボックスは、私はこの方法のように思っ値1.2,3

を持つことになり、これを行うには、いくつかの良い方法がある場合にお勧めします。また、いくつかの詳細に

答えて

1

属性を必要としてください。 g:selectの目的は異なる。ドメインオブジェクトのリストからg:を選択する場合は、を保存するために使用されるドメインクラス属性を指定するか、既に値が入っている場合は事前設定します。

単純な例です。あなたは、トンをドメインメニューとContenを持っていて、デフォルトのコンテンツ割り当てたいメニューに(私のコードからsnipetを、「menuInstanceは」私が働いて、実際のドメインオブジェクトです):

<g:select name="defaultContent.id" 
      from="${my.package.Content.list()}" 
      optionKey="id" 
      value="${menuInstance?.defaultContent?.id}" /> 

私はあなたを理解します目標:あなたはリストボックスのそれぞれの値の複数のリストを持つマップを表示するには、正しいものを渡したいですか?

return [ 'listbox1': list1, 'listbox2':list2 ] 

とあなただけのグラムの属性からに「listbox1を」を使用ビューで:選択ですから、このようなコントローラーでマップを作成する必要があります。

あなたのさらなる説明の後で、むしろ問題を解決するためにDTOを使用したいと思います。あなたのsrc /グルーヴィー(またはSRC/Java)の下でDTOを作成:あなたのコントローラで

public class ScoreDTO { 
    String season 
    int score 

    public String toString() { return "Season $season: $score" } 
} 

それは次のようになります。

ScoreDTO score1 = new ScoreDTO(season:'2012', score:3) 
ScoreDTO score2 = new ScoreDTO(season:'2011', score:1) 
ScoreDTO score3 = new ScoreDTO(season:'2010', score:2) 

def seasons = [ score1, score2, score3 ] 

return [ 'seasons':seasons ] 

そして、あなたのビューで、あなたはそれを使用することができます。

<g:select name="score" from="${ seasons }" /> 

これは現在あなたの目標に近いですか?

+0

いくつかのコードスニペットが与えられています。ありがとうございました – sethntl

+0

ええ、ほとんど何も追加する必要はありません – sethntl

関連する問題