Ich lade Daten mit Ajax und generieren dynamisch Spaltennamen in meiner DataTable. Meine DataTable hat eine unterschiedliche Anzahl von Spalten, abhängig von der Auswahl durch den Benutzer. (Es gibt eine Dropdown-Liste).DataTables mit unterschiedlicher Anzahl von Spalten
Zum Beispiel gibt es zwei Optionen in Dropdown-Liste als Südprovinz und Northern Province. Südliche Provinz Tabelle hat 4 Spalten und Nordprovinz Tabelle hat 6 Spalten.
Szenario 1
Erste Benutzer wählen Südprovinz die 4 Spalten. Dann erzeugt es Tabelle ohne keine Fehler, aber danach, wenn Benutzer Nordprovinz auswählt, das 6 Spalten hat, erzeugt Tabelle nicht und js Konsolendruckfehler wie unten.
Uncaught TypeError: Cannot read property 'style' of undefined jquery.dataTables.js:3828
Szenario 2
Erste Benutzer wählen Northern Province die 6 Spalten. Dann erzeugt es Tabelle ohne keine Fehler, aber danach, wenn Benutzer Südprovinz auswählt, das 4 Spalten hat, Tabelle nicht erzeugen und js Konsolendruckfehler wie unten.
Uncaught TypeError: Cannot read property 'mData' of undefined jquery.dataTables.js:6122
Aber wenn beide Tabelle gleiche Anzahl von Spalten hat, erzeugen beide Tabellen ohne Fehler.
Wie kann ich das lösen? Hier
ist der JS-Code
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" ] ]
});
};
});
Make arbeiten Geige und lassen Sie uns wissen, dass dies einmal – Innodel
Versuchen Sie, bevor make_SP Aufruf () Funktion zerstört die Datentabelle. – Gowri
@Gowri Wie kann ich das tun? Ich habe "bDestroy" verwendet: "true". aber es hat nicht funktioniert. – Bishan