Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: сортировка таблицы через jquery

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
daglas1
Отправлено: 04 Апреля, 2013 - 13:17:57
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Июль 2011  


Помог: 1 раз(а)




Всем привет.
Есть таблица которую строю динамически на основе пхп скрипта. А потом есть необходимость ее сортировать. Сортировка сейчас запускается, вызывает этот скрипт с нужными параметрами, скрипт выдает ответ в аякс формате, но таблица не пересортировуется а так и висит надпись processing
Шапка таблицы выглядит таким образом
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  
  3. $('#mainTable').dataTable( {
  4.                         //"bJQueryUI": true,
  5.                                 "sScrollY": 450,
  6.                                 "sScrollX": "95%",
  7.                                 //"sScrollXInner": "100%",
  8.                         "bPaginate": true,
  9.                         "bLengthChange": false,
  10.                 "bFilter": false,
  11.                         "bSort": true,
  12.                         "bInfo": false,
  13.                         "bAutoWidth": true,
  14.                         "bProcessing": true,
  15.                         "bServerSide": true,
  16.                         "sAjaxSource": "calc2_data.php<?=$data?>",
  17.                         "aoColumnDefs": [
  18.                         { "bSortable": true, "aTargets": [ 0 ] }
  19.                         ],
  20.                         "aaSorting": [[ 1, 'asc' ]],
  21.  
  22.  
 
 Top
DelphinPRO
Отправлено: 04 Апреля, 2013 - 13:56:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)






-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
daglas1
Отправлено: 04 Апреля, 2013 - 14:34:44
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Июль 2011  


Помог: 1 раз(а)




[quote=DelphinPRO][/quote]
пасибо.
Скорее всего дело тут описанно
http://datatables[dot]net/usage/columns
http://stackoverflow[dot]com/questio[dot][dot][dot]sort-not-working
ибо колонок у меня много и они содержат значения разных типов. А есть еще строки с объединением колонок. Это влияет на сортировку (colspan)?
(Добавление)
Взял шапку из этой страницы
http://live[dot]datatables[dot]net/#javascript,html,live

но все равно не работает. Может причина в получении данных динамически? Если бы была статическая страница то может быть бы все работало, а то у меня клики по заголовку таблицы заново создают аякс запрос.
 
 Top
IllusionMH
Отправлено: 04 Апреля, 2013 - 15:54:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




daglas1, там случаем событие клика не всплывает до обработчика с запросом?
как я понимаю
CODE (javascript):
скопировать код в буфер обмена
  1. $('#example').dataTable();

нужно ставить в колбэк запроса.
Если не так понял - пример на jsfiddle или любом другом месте выложите.
 
 Top
daglas1
Отправлено: 04 Апреля, 2013 - 16:01:16
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Июль 2011  


Помог: 1 раз(а)




IllusionMH пишет:
daglas1, там случаем событие клика не всплывает до обработчика с запросом?
как я понимаю
CODE (javascript):
скопировать код в буфер обмена
  1. $('#example').dataTable();

нужно ставить в колбэк запроса.
Если не так понял - пример на jsfiddle или любом другом месте выложите.

Там идет сначало шапка, потом
"fnRowCallback": function( nRow, aData, iDisplayIndex )
после этой функции объявлена $.getJSON('calc2_idata.php<?= $data ?>', function(data)

Пример попробую выложить
 
 Top
IllusionMH
Отправлено: 04 Апреля, 2013 - 16:07:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




daglas1, это точно есть на странице
http://live[dot]datatables[dot]net/#javascript,html,live ?
(Добавление)
на этой тоже нету
http://datatables[dot]net/examples/d[dot][dot][dot]ources/ajax[dot]html
 
 Top
daglas1
Отправлено: 04 Апреля, 2013 - 16:36:50
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Июль 2011  


Помог: 1 раз(а)




IllusionMH пишет:
daglas1, это точно есть на странице
http://live[dot]datatables[dot]net/#javascript,html,live ?
(Добавление)
на этой тоже нету
http://datatables.net/examples/data_sources/ajax.html

вот полный ява скрипт код с мизерными примесями пхп
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. <script type="text/javascript">
  3.                 $(document).ready(function() {
  4.                 $('#mainTable').dataTable( {
  5.                         //"bJQueryUI": true,
  6.                                 "sScrollY": 450,
  7.                                 "sScrollX": "95%",
  8.                                 //"sScrollXInner": "100%",
  9.                                
  10.                         "bPaginate": false,
  11.                         "bLengthChange": false,
  12.                 "bFilter": false,
  13.                         "bSort": true,
  14.                         "bInfo": false,
  15.                         "bAutoWidth": true,
  16.                         "bProcessing": false,
  17.                         "bServerSide": true,
  18.                         "sAjaxSource": "calc2_data.php<?=$data?>",
  19.                         "aoColumnDefs": [
  20.           { "asSorting": [ "asc" ], "aTargets": [ 1 ] },
  21.          { "asSorting": [ "desc", "asc", "asc" ], "aTargets": [ 2 ] },
  22.          { "asSorting": [ "desc" ], "aTargets": [ 3 ] },
  23.                   { "asSorting": [ "asc" ], "aTargets": [ 4 ] },
  24.          { "asSorting": [ "desc", "asc", "asc" ], "aTargets": [ 5 ] },
  25.          { "asSorting": [ "desc" ], "aTargets": [ 6 ] }
  26.                  
  27.                         ],
  28.                                
  29.      "iDefaultSortIndex": 2,
  30.          "sDefaultSortDirection": "asc" ,
  31.    
  32.  
  33.                                 "fnRowCallback": function( nRow, aData, iDisplayIndex ) {
  34.                             if ( aData[0] == "G" ) {
  35.                             var nGroup = document.createElement( 'tr' );
  36.                             var nCell = document.createElement( 'td' );
  37.                             nCell.className = "group1 left";
  38.                             nCell.innerHTML = aData[1];
  39.                             nCell.colSpan = 8;
  40.                             nGroup.appendChild( nCell );
  41.                             nRow = nGroup;
  42.                         } else if ( aData[0] == "A") {
  43.                             var nGroup = document.createElement( 'tr' );
  44.                             var nCell = document.createElement( 'td' );
  45.                             nCell.className = "avg1 right";
  46.                             nCell.innerHTML = aData[1];
  47.                             nGroup.appendChild( nCell );
  48.  
  49.                                 var span = 2;
  50.                                 for( var j=2; j<aData.length; j++ ) {
  51.                                         if( aData[j] == "" ) {
  52.                                                 span++;
  53.                                         } else {
  54.                                         var nCell2 = document.createElement( 'td' );
  55.                                         nCell2.className = "avg1";
  56.                                         nCell2.innerHTML = aData[j];
  57.                                         nGroup.appendChild( nCell2 );
  58.                                         }
  59.                                 }
  60.  
  61.                             nCell.colSpan = span;
  62.                             nRow = nGroup;
  63.                                 //$('td:eq(4)', nRow).html( '<b>A</b>' );
  64.                             }
  65.                             for(var i=4; i<=5; i++) {
  66.                                 if(aData[i] > 0) {
  67.                                         $('td:eq(' + i + ')', nRow).addClass( 'green' );
  68.                                 } else if(aData[i] < 0) {
  69.                                         $('td:eq(' + i + ')', nRow).addClass( 'red' );
  70.                                 }
  71.                         }
  72.                             return nRow;
  73.                         },
  74.                 } );
  75.  
  76.             $.datepicker.setDefaults( $.datepicker.regional[ "ru" ] );
  77.             $( "#dt1,#dt2" ).datepicker($.datepicker.regional[ "ru" ]);
  78.  
  79.             $.getJSON('calc2_idata.php<?= $data ?>', function(data) {
  80.               var items = [];
  81.  
  82.               prevGrp = -1;
  83.               $.each(data, function(key, val) {
  84.                     if(prevGrp!=val[3]) {
  85.                         prevGrp=val[3];
  86.                         items.push('<dt id="' + key + '"><input type="checkbox" name="grp_' + val[3] + '"/>' + val[4] + '</dt>');
  87.                     }
  88.                     items.push('<dd id="' + key + '"><input type="checkbox" name="code_' + val[2] + '" ' + (val[5] ? 'checked' : '') + '/>' + val[0] + '</dd>');
  89.                    
  90.               });
  91.  
  92.               $('<dl/>', {
  93.                 'class': 'my-new-list',
  94.                 html: items.join('')
  95.               }).appendTo('div#setuplist');
  96.  
  97.               $("dt > :checkbox").click(function() {
  98.                 var cbs = $(this).parent().nextUntil("dt").children(":checkbox");
  99.                 if($(this).attr('checked')) {
  100.                     cbs.attr('checked', 'checked');
  101.                 } else {
  102.                     cbs.removeAttr('checked');
  103.                 }
  104.               });
  105.             });
  106.  
  107.             $("a.setup").fancybox(
  108.             {
  109.                 "width": 800,
  110.                 "height": 300,
  111.                 "overlayShow": false,
  112.             });                
  113.                 } );
  114.         </script>
  115.  
  116.  

(Добавление)
Трабла была в "bServerSide": false,
именно фолс должен быть в качестве параметра чтобы сортировалось все в браузере на стороне клиента.
 
 Top
daglas1
Отправлено: 12 Апреля, 2013 - 18:13:57
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Июль 2011  


Помог: 1 раз(а)




появился еще вопрос. Как исключить некоторые поля из сортировки? А то получается морока, при сортировки полей которые внутри colspan получаются траблы. Также иногда имеют место траблы если в таблице есть разделители строк, т.е. идут строки с данными , потом очередной колспан на всю ширину таблицы с названием нового вида данных и опять данные, и так много раз внутри таблицы. Так вот когда пересортировываю отдельные поля, вот эти вот разделители иногда оказываются все в верху ибо в них пусто ( сортировка по возрастанию).
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB