2013-04-20 11 views
8

Sto usando jquery Data table 1.9.4 e jquery 1.9.1 e sto provando a eseguire una chiamata ajax come questa all'evento click.jquery data table non funzionante dalla seconda pagina

$(".icon-trash").on('click',function() { 
       // alert($(this).attr('id')); 
       $.post('/WorkOrderRequest/DeleteWOR', 
         { id: $(this).attr('id') }, 

         function (returndata) 
         { 

          if (returndata.ok) 
          { 
           window.alert(' deleted!'); 
           $("#emp" + idemployee).hide('slow'); 
          } 
          else { 
           window.alert(' error : ' + returndata.message); 
          } 

        }); 

      }); 

html parte:

@foreach (var item in Model) 
        { 

         <tr> 
          <td> 
           @Html.DisplayFor(modelItem => item.ProjectCode) 
          </td> 
          <td> 
           @Html.DisplayFor(modelItem => item.WO_Date) 
          </td> 


          <td> 
          <a id='@(item.WO_ID)' class="icon-edit" /> 
           |        
          <a id='@(item.WO_ID)' class="icon-trash" /> 
          </td> 
         </tr> 
        } 

Si sta lavorando bene sulla prima pagina, ma dalla seconda pagina relativo non mostrando alcun risultato. Please help

+0

cosa significa "seconda pagina"? Usando il paging nella tabella? – charlietfl

+0

sì sto usando l'impaginazione nel mio datatable –

risposta

22

Il modo in cui funziona l'impaginazione, le righe non necessarie alla pagina corrente vengono rimosse dal DOM. Pertanto, qualsiasi gestore di eventi vincolato direttamente a tali elementi viene perso quando viene rimosso il codice HTML.

È necessario utilizzare la sintassi di delega di on() per associare il gestore a una risorsa nella pagina che è permanente. Questa potrebbe essere la tabella padre o di qualsiasi altro genitore contro l'albero, tra cui document

$('#TableID').on('click','.icon-trash',function() {... 

API Reference: http://api.jquery.com/on/

+1

WoooooW !! Sta funzionando bene ora. Grazie tante. tu sei g8. –

+0

Ottimo aiuto !!!! grazie – user1882705

+0

Questa è la migliore risposta a questo problema. – Marcel

5

Se basta inserire il vostro codice di evento click sopra datatable codice js, sarà lavorando bene.

Come esempio.

$(".icon-trash").on('click',function() {}); 

$("#TableID").datatable(); 
+0

Buona risposta! L'ordine è davvero importante, grazie a una tonnellata –

+0

Questo non funziona quando si modifica l'ordine. –

1

Ho lo stesso problema e ho risolto spostando verso il basso il codice qui sotto della linea finalmente

$('#yourTable').dataTable();

Spero che aiuterà qualcuno.

Problemi correlati