jspspring-mvcdatatablesdandelion

Dandelion DataTables deferRender not working


I am using ajax source to display data on the table. Above my table i have criterias to filter what i want to display in my table. What i want to achieve is to disable initial data load, so when page is loaded I'll get empty table, then after I'll select criterias and press 'Apply Filters' button data will be loaded.

So i've tried using deferRender but it seems not working. Here is the code

<datatables:table id="myTableId" deferRender="true" url="/persons" serverSide="true" processing="true" dom="l0rtip" filterSelector="#filterButton" filterClearSelector="#filterClearButton">
     <datatables:column title="Id" name="id" property="id" />
     <datatables:column title="FirstName" name="firstName" property="firstName" />
     <datatables:column title="LastName" name="lastName" property="lastName" />
     <datatables:column title="City" name="city" property="address.town.name" filterable="true" filterCssClass="input-medium" />
     <datatables:column title="Mail" name="mail" property="mail" renderFunction="ajax#mailify" />
     <datatables:column title="Salary" name="salary" property="salary" renderFunction="custom-rendering#toCurrency" filterable="true" filterType="number_range" filterCssClass="input-small" />
     <datatables:column title="BirthDate" name="birthDate" property="birthDate" filterable="true" filterType="date_range" filterDateFormat="yyyy-mm-dd" renderFunction="custom-rendering,moment,bootstrap-datepicker#toDate" filterCssClass="input-small"/>
     <datatables:column title="Company" name="company" property="company.name" filterable="true" filterCssClass="input-small" filterType="select" filterValues="filtering#predefinedValues" />
     <datatables:extraHtml uid="0" cssStyle="float:right;">
        <a id="filterButton" value="Filter" class="btn btn-primary">Apply filters</a>
        <a id="filterClearButton" value="Filter" class="btn btn-inverse">Clear filters</a>
     </datatables:extraHtml>
  </datatables:table>

on the controller:

@RequestMapping(value = "/persons")
public @ResponseBody
DatatablesResponse<Person> findAllForDataTablesFullSpring(@DatatablesParams DatatablesCriterias criterias) {
    DataSet<Person> dataSet = personService.findPersonsWithDatatablesCriterias(criterias);
    return DatatablesResponse.build(dataSet, criterias);
}

Solution

  • You may be interested by the deferLoading feature instead of deferRender. See this post for an example using plain DataTables.

    Unfortunately, Dandelion-Datatables doesn't support this feature yet. An issue has just been filled.

    Disclaimer required by Stackoverflow rules: I'm the author of Dandelion-Datatables