n00b programmer
n00b programmer

Reputation: 2701

In Primefaces, adding a row to a table with filtering

I'm using a datatable with filtering. This is the table declaration:

<p:dataTable id="#{tblId}" var="p" editable="true" editMode="cell"
resizableColumns="true" rowIndexVar="rowIndex" selectionMode="multiple"
rowKey="#{p.id}" selection="#{ppselection}"
emptyMessage="No Params in table" value="#{tblValue}" scrollable="true"
style="height:100%" sortMode="multiple" styleClass="#{styleClass}"
filteredValue="#{filteredParams}">

When adding a new row to the table, I want it to already be displayed according to the current filter. i.e. if the filter is "aa" and the row name is "aabbcc" then I want it displayed, but if the row name is "bbcc" then I don't want it displayed. Right now, all I came up with is decidng whether I want to manually add it to the filteredParams list or not.
This is an example of one of the columns in the table, although all the coulmns are filterable:

    <p:column width="15%" id="ParameterColumn"  headerText="Parameter" sortBy="#{p.name}"
    filterBy="#{p.name}" filterMatchMode="contains">
    <p:cellEditor id="Parameter">
        <f:facet name="output">
            <h:outputText id="param_name" value="#{p.name}" />
        </f:facet>
        <f:facet name="input">
            <p:inputText id="nameInput" value="#{p.name}" style="width:99%"
                validator="#{p.validateParamName}">
                <p:ajax event="change"
                    update=":main_tabs:paramForm:ParamTbl, :main_tabs:paramForm:SplitedParamTbl" />
            </p:inputText>
            <p:messages for="nameInput" display="tooltip" />
        </f:facet>
    </p:cellEditor>
</p:column>

Thanks!!

Upvotes: 0

Views: 730

Answers (1)

Ann
Ann

Reputation: 724

You can trigger filtering in oncomplete method of ajax/button that adds new row:

oncomplete='tableWidgetVar.filter();'

Upvotes: 1

Related Questions