DataTable'ımda dinamik olarak ajax kullanarak ve sütun adları üreterek veri yüklüyorum. DataTable'ım, kullanıcı seçimine bağlı olarak farklı sayıda sütuna sahiptir. (Bir açılır liste vardır).Farklı sayıda sütun içeren DataTable'lar
Örneğin, Güney Eyaleti ve Kuzey Eyaleti olarak açılan listeden 2 seçenek vardır. Güney İli tablo 4 sütun ve Kuzey il tablosunun 6 sütun vardır.
Senaryo 1
İlk kullanıcı 4 sütun var Güney İli seçin. Sonra hata olmadan tablo oluşturur, Ama sonra kullanıcı 6 sütun içeren Kuzey Eyaleti seçerseniz, tablo aşağıdaki gibi üretilemiyor ve js konsol baskı hatası.
Uncaught TypeError: Cannot read property 'style' of undefined jquery.dataTables.js:3828
Senaryo 2
İlk kullanıcı 6 sütun bulunmaktadır Kuzey İli seçin. Sonra hata olmadan tablo üretir, Ama sonra kullanıcı 4 sütun içeren Güney Eyaleti seçerseniz, tablo aşağıdaki gibi üretilemez ve js konsol baskı hatası. Her iki tablo aynı kolon sayısını varsa
Uncaught TypeError: Cannot read property 'mData' of undefined jquery.dataTables.js:6122
Fakat her iki tablo hatasız üretir.
Bunu nasıl çözebiliriz? İşte
Ben güvenli yolu tamamen tabloyu kaldırmak ve sonra reinitialising önce DOM tekrar takın olduğunu düşünüyorum JS Kod
jQuery(document)
.ready(
function() {
$('#province-list').change(
function() {
var prov = $(this).val();
if (prov == "sp") {
make_SP();
} else if (prov == "np") {
make_NP();
}
});
function make_SP() {
$("#dataTables-res_item")
.dataTable(
{
"bDestroy" : true,
"bProcessing" : false,
"bServerSide" : true,
"sAjaxSource" : "/province_list_view?p_name=sp",
"aoColumns" : [
{
"mData" : "result_date",
"sTitle" : "Result Date"
},
{
"mData" : "result_day",
"sTitle" : "Result Day"
},
{
"mData" : "draw_number",
"sTitle" : "Draw Number"
},
{
"mData" : "draw_time",
"sTitle" : "Draw Time"
} ],
"order" : [ [ 0, "desc" ] ]
});
};
function make_NP() {
$("#dataTables-res_item")
.dataTable(
{
"bDestroy" : true,
"bProcessing" : false,
"bServerSide" : true,
"sAjaxSource" : "/province_list_view?p_name=np",
"aoColumns" : [
{
"mData" : "result_date",
"sTitle" : "Result Date"
},
{
"mData" : "result_day",
"sTitle" : "Result Day"
},
{
"mData" : "draw_number",
"sTitle" : "Draw Number"
},
{
"mData" : "draw_time",
"sTitle" : "Draw Time"
},
{
"mData" : "draw_place",
"sTitle" : "Draw Place"
},
{
"mData" : "draw_person",
"sTitle" : "Agent"
} ],
"order" : [ [ 0, "desc" ] ]
});
};
});
Yap çalışma kemençe ve (bize make_SP çağırmadan önce, bir kez bu deneyin – Innodel
bildirmek) işlevi datatable yok. – Gowri
@Gowri Bunu nasıl yapabilirim? Ben "bDestroy" kullandım: true'. ama işe yaramadı. – Bishan