代码之家  ›  专栏  ›  技术社区  ›  TripWired

Grails G:选择设置选定索引

  •  1
  • TripWired  · 技术社区  · 14 年前

    如何在<g:select>标记上使用列表中的值设置selectedIndex?我有一个页面可以让你添加一个记录。然后,页面将转到包含g:select的视图,我希望g:select默认为我刚插入数据库的项目。

    我尝试在flash中传递新对象,但我无法在用于生成g:select数据的列表中找到它的索引。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Philippe    14 年前

    假设您在控制器级别将Book对象存储在flash.book中,那么您的第二个页面可能如下所示:

    <html>
        <head>
            <g:javascript library="prototype" />
            <g:javascript>
                  function showLast(selectedId) {
                      if (selectedId) {
                        $$('#books option[value=' + selectedId + "]")[0].selected = true;
                      } else {
                        $('books').selectedIndex = 0;
                      }
                  };
    
                  Event.observe(window, 'load', init, false);
    
                  function init() {
                      showLast(${flash?.book?.id});
                  }
                </g:javascript>
        </head>
        <body>
            <g:select id="books" name="id"
                      from="${Book.list()}"
                      value="title"
                      optionValue="title"
                      optionKey="id"
             />
        </body>
    </html>