[Bug/Problems] iDisplayStart get back to zero when we do sorting in 2,3,4 ... page
[Bug/Problems] iDisplayStart get back to zero when we do sorting in 2,3,4 ... page
hksd
Posts: 15Questions: 0Answers: 0
Hi All,
Need Your Help Here...
I'm Using datatables with server side processing.. (using java , struts )
here is my js for datatables :
[code]
$(document).ready(function() {
oTable = $('#tables').dataTable({
"bProcessing": true,
"bServerSide": true,
"sServerMethod": "POST",
"oLanguage": {
"sInfo": "_TOTAL_ items ",
"sInfoEmpty": "",
},
'aoColumns': [
{
"sWidth" : '70px',
"bVisible" : false
},
{
"sWidth" : '70px'
},
{
"sWidth" : '70px'
},
{
"sWidth" : '70px'
},
{
"sWidth" : '70px',
"bSortable": false,
"fnRender": function ( o, val ) {
return 'Edit';
}
},
{
"sWidth" : '70px',
"bSortable": false,
"fnRender": function ( o, val ) {
return 'delete';
}
}
],
'bAutoWidth': false,
'bFilter': false,
'bInfo': true,
'iDisplayLength': 10,
'sPaginationType': 'full_numbers',
"bLengthChange" : false,
"sAjaxSource": "jsonfieldsfeed!populate.action"
});
} );
[/code]
here is my problem :
fist time render the tables (database have 11 items / data ) , it send query string parameters are :
bSortable_0 true
bSortable_1 true
bSortable_2 true
bSortable_3 true
bSortable_4 false
bSortable_5 false
iColumns 6
iDisplayLength 10
iDisplayStart 0
iSortCol_0 0
iSortingCols 1
mDataProp_0 0
mDataProp_1 1
mDataProp_2 2
mDataProp_3 3
mDataProp_4 4
mDataProp_5 5
sColumns
sEcho 1
sSortDir_0 asc
then go to next page (pagination to page 2) the query string parameters are :
bSortable_0 true
bSortable_1 true
bSortable_2 true
bSortable_3 true
bSortable_4 false
bSortable_5 false
iColumns 6
iDisplayLength 10
iDisplayStart 10
iSortCol_0 0
iSortingCols 1
mDataProp_0 0
mDataProp_1 1
mDataProp_2 2
mDataProp_3 3
mDataProp_4 4
mDataProp_5 5
sColumns
sEcho 2
sSortDir_0 asc
if we see the iDisplayStart value is 10. so it will set your sql query for limit to 10,10
we are now in the second page. now i'm sorting a column in the page 2. the weird think is iDisplayStart become 0 :
bSortable_0 true
bSortable_1 true
bSortable_2 true
bSortable_3 true
bSortable_4 false
bSortable_5 false
iColumns 6
iDisplayLength 10
iDisplayStart 0
iSortCol_0 1
iSortingCols 1
mDataProp_0 0
mDataProp_1 1
mDataProp_2 2
mDataProp_3 3
mDataProp_4 4
mDataProp_5 5
sColumns
sEcho 3
sSortDir_0 asc
it give wrong result sorting data because right now the limit sql query become 0,10.
can any one have solution for this issue ? how to handle sorting if the page is not in the first page?
Best Regards,
HKS
Need Your Help Here...
I'm Using datatables with server side processing.. (using java , struts )
here is my js for datatables :
[code]
$(document).ready(function() {
oTable = $('#tables').dataTable({
"bProcessing": true,
"bServerSide": true,
"sServerMethod": "POST",
"oLanguage": {
"sInfo": "_TOTAL_ items ",
"sInfoEmpty": "",
},
'aoColumns': [
{
"sWidth" : '70px',
"bVisible" : false
},
{
"sWidth" : '70px'
},
{
"sWidth" : '70px'
},
{
"sWidth" : '70px'
},
{
"sWidth" : '70px',
"bSortable": false,
"fnRender": function ( o, val ) {
return 'Edit';
}
},
{
"sWidth" : '70px',
"bSortable": false,
"fnRender": function ( o, val ) {
return 'delete';
}
}
],
'bAutoWidth': false,
'bFilter': false,
'bInfo': true,
'iDisplayLength': 10,
'sPaginationType': 'full_numbers',
"bLengthChange" : false,
"sAjaxSource": "jsonfieldsfeed!populate.action"
});
} );
[/code]
here is my problem :
fist time render the tables (database have 11 items / data ) , it send query string parameters are :
bSortable_0 true
bSortable_1 true
bSortable_2 true
bSortable_3 true
bSortable_4 false
bSortable_5 false
iColumns 6
iDisplayLength 10
iDisplayStart 0
iSortCol_0 0
iSortingCols 1
mDataProp_0 0
mDataProp_1 1
mDataProp_2 2
mDataProp_3 3
mDataProp_4 4
mDataProp_5 5
sColumns
sEcho 1
sSortDir_0 asc
then go to next page (pagination to page 2) the query string parameters are :
bSortable_0 true
bSortable_1 true
bSortable_2 true
bSortable_3 true
bSortable_4 false
bSortable_5 false
iColumns 6
iDisplayLength 10
iDisplayStart 10
iSortCol_0 0
iSortingCols 1
mDataProp_0 0
mDataProp_1 1
mDataProp_2 2
mDataProp_3 3
mDataProp_4 4
mDataProp_5 5
sColumns
sEcho 2
sSortDir_0 asc
if we see the iDisplayStart value is 10. so it will set your sql query for limit to 10,10
we are now in the second page. now i'm sorting a column in the page 2. the weird think is iDisplayStart become 0 :
bSortable_0 true
bSortable_1 true
bSortable_2 true
bSortable_3 true
bSortable_4 false
bSortable_5 false
iColumns 6
iDisplayLength 10
iDisplayStart 0
iSortCol_0 1
iSortingCols 1
mDataProp_0 0
mDataProp_1 1
mDataProp_2 2
mDataProp_3 3
mDataProp_4 4
mDataProp_5 5
sColumns
sEcho 3
sSortDir_0 asc
it give wrong result sorting data because right now the limit sql query become 0,10.
can any one have solution for this issue ? how to handle sorting if the page is not in the first page?
Best Regards,
HKS
This discussion has been closed.
Replies
any clue on this??
edit your jqueryDataTables.js after line 3895 or below this code :
[code]
3895 oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
[/code]
change line of code 3896 :
[code]
3896 oSettings._iDisplayStart = 0; /* reset display back to page 0 */
[/code]
to this code :
[code]
if(oSettings.iDraw == 0)
oSettings._iDisplayStart = 0; /* reset display back to page 0 */
[/code]
Best regards,
HKS
before :
[code]
/* Copy the master data into the draw array and re-draw */
if ( oSettings.oFeatures.bFilter )
{
/* _fnFilter() will redraw the table for us */
_fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );
}
else
{
oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
oSettings._iDisplayStart = 0; /* reset display back to page 0 */
_fnCalculateEnd( oSettings );
_fnDraw( oSettings );
}
[/code]
we changed it.. after
[code]
/* Copy the master data into the draw array and re-draw */
if ( oSettings.oFeatures.bFilter )
{
/* _fnFilter() will redraw the table for us */
_fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );
}
else
{
oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
if(oSettings.iDraw == 0)
oSettings._iDisplayStart = 0; /* reset display back to page 0 */
_fnCalculateEnd( oSettings );
_fnDraw( oSettings );
}
[/code]
Best Regards,
HKS
Best regards,
HKS
However, as you have found, it is easy to override in the source code, so if you don't want this behaviour, just modify the code as you have done :-)
Allan
I see....
Thank you for the explaination.
Best Regards,
HKS