2013-08-29 3 views
1

Я сделал ряд remove(), а затем попытался до fnDestroy() и инициализировал обратно DataTable. Количество записей и разбиение на страницы не производится (* DataTable не обновлен) *.Обновить данныеТаблица после удаления() done

Я также пытался использовать fnDraw(), но он по-прежнему бесполезен.

Я посмотрел на источник страницы, и удаленный html-строка все еще там.

Я использую Ajax, чтобы удалить строку. Цените вашу помощь

Это мой сценарий удаления:

$(document).ready(function() 
     { 
      $('table#sample_1 td a.delete').click(function() 
      { 
       if (confirm("Are you sure you want to delete this row?")) 
       { 
        var id = $(this).parent().parent().attr('id'); 
        var data = 'id=' + id ; 
        var parent = $(this).parent().parent(); 

        $.ajax(
        { 
          type: "POST", 
          url: "process.php", 
          dataType: "json", 
          data: data, 
          cache: false, 

          success: function() 
          { 

          var dtable = $('#sample_1').dataTable(); 
         dtable.fnDestroy(); 


         parent.fadeOut('slow', function() {$(this).remove();}); 


         //Reinitialize the datatable 
         $('#sample_1').dataTable({ 
            "sDom": "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>", 
            "sPaginationType": "bootstrap", 
            "oLanguage": { 
             "sLengthMenu": "_MENU_ records per page", 
             "oPaginate": { 
              "sPrevious": "Prev", 
              "sNext": "Next" 
             } 
            }, 
            "aoColumnDefs": [{ 
             'bSortable': false, 
             'aTargets': [0] 
            }] 
         }); 

          } 
        }); 
       } 
      }); 


     }); 


     </script> 
+0

попробовать '$ ("элемент") скрыть() FadeIn ('быстрый');.' –

ответ

2

Вы можете использовать fnDeleteRow удалить строку в DataTable. Эта функция автоматически перерисовывает таблицу.

см это, http://datatables.net/api

+0

Я пытаюсь использовать Ajax и некоторые люди также отметил, что даже после того, как делать fnDeleteRow, не referesh стол. И я также использую флажок для удаления строк. Есть ли другое решение для этого? Большое спасибо: D –

0

Вы можете использовать этот код:

var rowid = document.getElementById(id); 
var Pos = dt.fnGetPosition(rowid); 
dt.fnDeleteRow(Pos); 

Здесь идентификатор уникальный идентификатор строки, которые вы хотите удалить.

0

Он будет кэшировать всю информацию, находящуюся в инициализации, и когда вы попытаетесь выполнить некоторые действия (например, сортировка), она будет повторно рисовать таблицу с существующим набором данных. Поэтому для предотвращения повторного рисования вам необходимо использовать draw (false). .

table.row('.selectedRow').remove().draw(false); 
+0

Пожалуйста, добавьте некоторое объяснение, почему этот код помогает OP. Это поможет обеспечить ответ, о котором могут узнать будущие зрители. См. [Ответ] для получения дополнительной информации. –

+0

@MikeMcCaughan вы правы. Я изменил свой ответ. Спасибо, что привлек это мое внимание. –

Смежные вопросы