Установка значений в раскрывающемся списке из определенных значений карты - PullRequest
0 голосов
/ 12 марта 2012

Я создал карту в своем контроллере и передал ее в View. У меня есть выпадающий список, который заполняет значения из базы данных. Значения: «1», «2», «3». Я хочу выбрать выпадающий из значений карты как и в первом раскрывающемся списке, выбранное значение будет первым элементом карты, а для следующего раскрывающегося списка выбранное значение будет вторым значением карты и т. д. Я думаю, это можно сделать из атрибута значения на вкладке выбора, но как? Любая помощь приветствуется

* 1003 например *

Я создал карту в контроллере и передал ее для просмотра

def Population={

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

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

} 

И в представлении я использую его, как показано ниже

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

Мое требование - выбрать раскрывающийся список со значением ключа "1" баллов карты. Здесь запрос

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

возврат ["1", "2", "3"]

Спасибо за ответ

У меня есть функциональность для игрока по его оценкам за последние 6 лет. У меня есть модуль, который игрок может видеть или обновлять свои оценки, но не может создать совершенно новый счет. Данные всех его оценок должны быть загружены из другого источника. Когда приложение загружает, оно загрузит последний имеющийся у него счет. У него есть три уровня баллов: «1», «2», «3», поэтому он может набрать только один балл. из трех. Я хочу предварительно установить значение оценок в представлении, когда приложение первоначально загружается с данными последней оценки.

например В контроллере я вычла все результаты за 6 лет и сохранила их на карте, поэтому карта имеет результат в формате

[«оценка 2012 года»: «2», [оценка 2011 года: «3»], [оценка 2011 года]: «1», [оценка 2010 года]: «2»] и т. Д.

Итак, предположим, что в 2012 году счет игрока равен 2 таким образом, когда представление загружается, он будет задавать для комбинированного списка 2 на 2012 год, для этого списка будет значение 1,2,3

.

так за 2011 год вид предустановит выпадающий список для 2011 года до 3, поле со списком будет иметь значение 1,2,3

Я так и думал, пожалуйста, предложите, если есть какой-то лучший способ сделать это или вам нужно больше подробностей

1 Ответ

1 голос
/ 12 марта 2012

Атрибут value для g: select имеет различное назначение. Если вы заполняете g: select из списка доменных объектов, вы можете указать атрибут класса домена, который используется для хранения значения - или предустановки, если он уже содержит некоторое значение.

Простой пример. У вас есть доменное меню и содержание, и в меню вы хотите назначить содержимое по умолчанию (фрагмент из моего кода, «menuInstance» - это фактический объект домена, с которым я работаю):

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

Я понимаю вашу цель так: вы хотите перейти к просмотру карты с несколькими списками значений для каждого из списков, верно? Поэтому вы должны создать карту в контроллере следующим образом:

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

и в представлении вы просто используете 'listbox1' для из атрибута g: select.

Так что после вашего дальнейшего объяснения я бы лучше использовал DTO, чтобы решить проблему. Под вашим src / groovy (или 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 }" />

Это ближе к вашей цели сейчас?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...