2011-10-19 14 views
8

dataTables kullanarak tek bir sayfada birkaç tablo var. Her birinin kendi 'sjax kaynak' olması gerekir. Bunu nasıl yapacağımı tam olarak anlayamıyorum. İşte sahip olduğum en düşük kod: Temel olarak çıplak kemik kurulumudur. Her tablo datatable sınıfı ve benzersiz bir kimlik. Ancak, belirli bir tabloya dayanarak AjaxSource'u nasıl değiştireceğinizden emin değilsiniz.Farklı ajax kaynakları ile aynı sayfada birden çok DataTable

Teşekkür ederiz!

DÜZENLEME:

İşte ben bunu kadar sona erdi var: Tabloda İç

 $('.datatable').each(function(index){ 

       $('#'+$(this).attr('id')).dataTable({ 
             "bProcessing": true, 
       "sAjaxSource": $(this).children('caption').html(), 
       "bSort": false, 
       "fnDrawCallback": function() { 
       } 
         }); 
     }); 

Ben css tarafından gizli ve Ajax Kaynak URL içeren bir başlık etiketi koydu. Her örnekte yinelenir ve URL'yi alır.

Bu, şu ana kadar çalışıyor gibi görünüyor!

cevap

5

Bu işe yaramayacak mı? Her veri tablosunu benzersiz bir şekilde tanımlamak için sınıftan ziyade id'yi kullanır ve her bir tabloya kimliğe bağlı olarak ayrı bir kaynak ekler.

var oTable = $('#FirstDataTableID').dataTable({ 
      "bProcessing": true, 
      "sAjaxSource": "/ajax/function", 
      "bSort": false, 
      "fnDrawCallback": function() { 
        //some click events initilized here 
      } 
     }); 

    var oTable = $('#SecondDataTableID').dataTable({ 
      "bProcessing": true, 
      "sAjaxSource": "/ajax/other_function", 
      "bSort": false, 
      "fnDrawCallback": function() { 
        //some click events initilized here 
      } 
     }); 
+0

Evet, muhtemelen, ama her biri için tamamen yeni bir başlatma kullanmak istemiyorum, oldukça dağınık oldukça hızlı olsun. – dzm

+2

Peki, her bir datatable için ayrı bir başlatma yapmadan, her bir datatable için ayrı bir başlatmaya sahip olmak oldukça zor. Ortak kodun yinelenmesine izin vermeyecek şekilde, yalnızca kaynak özniteliği ile daha küçük başlatmaları ve daha sonra sınıfları temel alan bir ortak başlatmayı deneyebilirsiniz. –

+0

Gönderiyi çalışmakta olan bir çözümle yeni güncelledim, ne düşünüyorsun? herhangi bir sorun görüyor musunuz? – dzm

0

Sen neye ihtiyacınız almak için sperately her tabloyu seçin ve sırayla kendisine uygun Ajax veri kaynağını uygulamak gerekir. Şimdi sen sınıf adına göre seçiyoruz:

$(".dataTable") 

muhtemelen dönüştürülmesi gerekir: Sana bir sürü tablolar varsa bu sıkıcı alacak tahmin

$("#dataTable1") 

ama bu güzel Yapmayı önerdiğin şeyi yapmanın tek yolu.

$('.dataTableServer').each(function() { 
     var source = $(this).attr("data-source"); 
     $(this).dataTable({ 
      "sPaginationType": "full_numbers", 
      "bProcessing": true, 
      "bServerSide": true, 
      "sAjaxSource": source 
     }); 
    }); 

her dataTable

4

ben sizinkine benzer veriye nitelik ve başlatma kodu bir html5 kullanılarak çözüldü aynı problem vardı

Aynı sayfadan iki veya daha fazlasını kullanabilirsiniz. Bunu yaptım ve datatables oldukça güzel çalışıyor. Veriler, kayıtları yerel olarak eşzamansız olarak kaldırılmış olsa bile verileri depolar. Bu nedenle, kaldırılan kayıtları aradığımızda her zaman doğru sonucu göstermemiz gerektiğini açıklamalıyız. Veri sayfalarının yalnızca bir kez başlatılması gerektiğinden, aynı sayfada yer alan her bir datatables için veritabanlarını hazırlamaya devam etmemiz gerektiğinden, yerel kayıtların saklanmasını istediğimiz için saklamak zorundayız çünkü aynı sayfada/farklı verileri göster.

So. Yöntemi

olarak kullanmak zorundayız. Bu sorunu çözecektir.

0
için bir kimliği oluşturmak zorunda kalmamasıdır yol: