2012-02-27 21 views
5

No sé si se trata de un error, pero tengo un + ajax tabla de datos con las siguientes opciones:Ajax sorting server-side, ¿iSortCol_0 está considerando columnas hiddend?

 "bServerSide": true, 
    "sAjaxSource": url, 
    "fnServerData": function (sSource, aoData, fnCallback) { 
     jQuery.ajax({ 
      "dataType": 'json', 
      "type": "POST", 
      "url": sSource, 
      "data": aoData, 
      "success": fnCallback 
     }); 
    }, 
    "sPaginationType": "bootstrap", 
    "aoColumns": [ 
        { "sName": "Id", "sType": 'numeric', "bVisible": false }, 
        { "sName": "PostingDate", "sType": 'Date' }, 
        { "sName": "Userid", "sType": 'string', "bVisible": false }, 
        { "sName": "DisplayName" }, 
        { "sName": "Description" }, 
        { "sName": "MainTag" }, 
        { "sName": "Tags" }, 
        { "sName": "HowMuch" } 
       ] 

Tengo un formulario donde los usuarios pueden añadir filas y cuando se lo presente que añadir datos a la base de datos con una llamada ajax y luego llamar a: jQuery ('# mydatatable'). dataTable(). fnReloadAjax();

Cuando un usuario haga clic para ordenar la tabla por la columna "MainTag" mi Ajax del lado del servidor recibe:

iSortCol_0 4 
iSortingCols 1 

Y todo bSortable_ # están allí, correctamente de 0 a 7 (tengo 8 columnas como se muestra anteriormente.

Ahora mi problema es iSortCol_0 es engañosa, ya que las columnas donde ocultos, si no tengo un medio para saber qué columnas se oculta en el servidor que malinterpretar iSortCol_0 = 4 ordenar por la columna equivocada.

Puedo implementar una solución, enviando el información de qué columnas se muestran u ocultan externamente a las tablas de datos, pero tengo la sensación de que estoy haciendo algo mal o me he perdido para encontrar la respuesta a mi problema en la documentación.

Respuesta

4

No creo que haya una forma automática de saber eso, lo que haría es enviar un parámetro adicional al servidor usando fnServerParams() (como se detalla en el ejemplo this) para informar al servidor sobre qué columnas están ocultas

"fnServerParams": function (aoData) { 
     aoData.push({ "name": "more_data", "value": "my_value" }); 
    } 
+0

Thanks/Grazie. ¡Parece una solución razonablemente estándar! –

Cuestiones relacionadas