代码之家  ›  专栏  ›  技术社区  ›  Daniel Wosch

行的分页重置复选框

  •  0
  • Daniel Wosch  · 技术社区  · 7 年前

    我有一个gsp包含一些行,其中有一个复选框,允许用户选择多行。

     <table>
    <thead>
        <tr>
        // Column headers
        </tr>
    </thead>
    <tbody>
        <g:each in="${itemList}" status="i"
                    var="instance">
            <tr class="${(i % 2) == 0 ? 'even' : 'odd'}">
                // Some other rows
                <td>
                    <g:checkBox name="selected"
                                    value="${instance.id}"
                                    checked="false" />
                </td>
            </tr>
        </g:each>
    </tbody>
    

    在我桌下的一页纸上:

        <div class="pagination">
            <g:paginate total="${total}" params="${params}"/>
        </div>
    

    现在的问题是,当我从第1页->第2页->切换到第1页时,第1页的所有复选框都将重置。

    当分页调用列表控制器方法时,我通过在调试器中观察调用列表控制器方法时的以下情况,检查了以下页上开关:

    params.list('selected')
    

    但不幸的是名单是空的。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Daniel    7 年前

    分页不会提交表单(或者至少不像您认为的那样;我真的不记得底层逻辑是否使用表单),因此您的复选框不会提交到任何地方。

    您需要考虑提交表单的不同方法,以便保留您的复选框选择。两种方法可以是:

    1. 编写您自己的分页标记,包装g.paginate并修改发送的参数,以便包含您的复选框值。

    2. 将ajax处理添加到复选框中,以便在更改时立即提交它们。