【问题标题】:ace:dataTable default filterace:dataTable 默认过滤器
【发布时间】:2012-10-15 18:55:03
【问题描述】:

我的 Web 应用程序使用 <ace:dataTable>,我想向列添加默认过滤器。数据表使用延迟加载。我知道我可以将托管 bean 中的过滤器添加到“加载”方法。

但是我需要在渲染页面开始时将过滤器设置到视图中的过滤器“文本框”中,而不是在托管 bean 中实现过滤器。

我怎样才能做到这一点?

【问题讨论】:

  • 我会通过 jQuery 使用默认的 jsf id 来做到这一点。

标签: java jsf datatable icefaces icefaces-3


【解决方案1】:

如果我能理解您的问题。如果你有这样的数据表:

<ace:dataTable id="carTable"
                  value="#{dataTableBean.carsData}"
                  var="car"
                  paginator="true"
                  paginatorPosition="bottom"
                  rows="10">
        <ace:column id="id" headerText="ID" sortBy="#{car.id}"
                    filterBy="#{car.id}" filterMatchMode="contains">
            <h:outputText id="idCell" value="#{car.id}"/>
        </ace:column>
    </ace:dataTable>

你有一个这样的 html 代码:

<div class="ui-datatable ui-widget" id="form:carTable">
<div>
    <table>
        <thead>
            <tr>
                <th class="ui-widget-header">
                    <div class="ui-header-column ui-sortable-column clickable" id="form:carTable:id">
                        <span>
                            <span class="ui-header-text" id="form:carTable:id_text">ID</span>
                        </span>
                        <span class="ui-header-right">
                            <span class="ui-sortable-control">
                                <span class="ui-sortable-column-icon">
                                    <a class="ui-icon ui-icon-triangle-1-n" tabindex="0"
                                       style="opacity: 0.33; "></a>
                                    <a class="ui-icon ui-icon-triangle-1-s" tabindex="0"
                                       style="opacity: 0.33; "></a>
                                </span>
                                <span class="ui-sortable-column-order"></span>
                            </span>
                        </span>
                        <input class="ui-column-filter" id="form:carTable:id_filter" name="form:carTable:id_filter"
                               size="1" tabindex="0" value=""/>
                    </div>
                </th>
            </tr>
        </thead>
        <tbody class="ui-datatable-data ui-widget-content">
            <tr class=" ui-datatable-even  " id="form:carTable_row_0" tabindex="0">
                <td>
                    <span id="form:carTable:0:idCell">1</span>
                </td>
            </tr>
            <tr class=" ui-datatable-odd  " id="form:carTable_row_1" tabindex="0">
                <td>
                    <span id="form:carTable:1:idCell">2</span>
                </td>
            </tr>
        </tbody>
    </table>
</div>

在那里你可以看到输入。然后我会使用 jQuery:

$(document).ready(function() {
$('[id$=id_filter]').html("default_text_for_filtering");});

【讨论】:

  • 感谢您提供此解决方案。我总是尝试不那么频繁地使用 JS 代码,但有时.. :)
  • 我也是。您必须考虑,但 jsf 试图简化 Web 开发,这意味着一些限制。
猜你喜欢
  • 2012-05-03
  • 1970-01-01
  • 2022-01-01
  • 1970-01-01
  • 2015-06-10
  • 2019-01-05
  • 2013-09-07
  • 2010-10-25
相关资源
最近更新 更多