Ciao a tutti,
ho una pagina web in cui popolo dinamicamente una tabella colonna per colonna, attraverso un interazione Ajax client-server, che richiede una colonna alla volta al server (apache-mysql-php).
Ogni singola colonna viene popolata dalla funzione seguente:
function tableColInsertAt (tableID,colIndex,rowsValues,cellIntClassName,cellDataClassName) {
var table = document.getElementById(tableID);
var rows = table.rows;
var numRows = rows.length;
var row, cell;
var applyCssClass = (arguments.length > 3);
for (var r = 0; r < numRows; r++) {
row = document.getElementById(tableID).rows[r];
cell = row.insertCell(colIndex);
cell.innerHTML = rowsValues[r];
if (applyCssClass) {
var cellClassName = (r == 0) ? cellIntClassName : cellDataClassName ;
cell.className = cellClassName;
}
}
}
La cosa funziona perfettamente, tranne nel caso definito dalle seguenti condizioni:
1) Browser IE 8
2) Modalità visualizzazione: IE8
3) Numero di righe della singola colonna molto alto (>800)
In questo caso non riesco mai a finire la tabella, perchè durante la renderizzazione di una colonna (non sempre la stessa) mi viene ritornato un messaggio da IE che dice che a causa di problemi di visualizzazione Explorer è costretto a ricaricare la pagina in "visualizzazione compatibilità".
In "visualizzazione compatibilità" tutto fila liscio, ma vorrei riuscire a scrivere del codice che funzioni per IE8 e non forzare Explorer a lavorare in "visualizzazione compatibilità".
Sto cercando quindi di capire che cos'è nel codice che potrebbe causare quel problema, ma per ora nessun risultato.
Ho anche provato a realizzare la renderizzazione con la libreria DOM, ma il risultato è lo stesso:
function tableColInsertAt (tableID,colIndex,rowsValues,cellIntClassName,cellDataClassName) {
var table = document.getElementById(tableID);
var rows = table.getElementsByTagName("tr");
var numRows = rows.length;
var row, cell;
var applyCssClass = (arguments.length > 3);
for (var r = 0; r < numRows; r++) {
row = (rows[r]);
cell = document.createElement("td");
cell.appendChild(document.createTextNode(rowsValues[r]));
row.appendChild(cell);
if (applyCssClass) {
var cellClassName = (r == 0) ? cellIntClassName : cellDataClassName ;
cell.className = cellClassName;
}
}
}
Qualcuno mi può aiutare?
Grazie e ciao!
Andrea
ho una pagina web in cui popolo dinamicamente una tabella colonna per colonna, attraverso un interazione Ajax client-server, che richiede una colonna alla volta al server (apache-mysql-php).
Ogni singola colonna viene popolata dalla funzione seguente:
function tableColInsertAt (tableID,colIndex,rowsValues,cellIntClassName,cellDataClassName) {
var table = document.getElementById(tableID);
var rows = table.rows;
var numRows = rows.length;
var row, cell;
var applyCssClass = (arguments.length > 3);
for (var r = 0; r < numRows; r++) {
row = document.getElementById(tableID).rows[r];
cell = row.insertCell(colIndex);
cell.innerHTML = rowsValues[r];
if (applyCssClass) {
var cellClassName = (r == 0) ? cellIntClassName : cellDataClassName ;
cell.className = cellClassName;
}
}
}
La cosa funziona perfettamente, tranne nel caso definito dalle seguenti condizioni:
1) Browser IE 8
2) Modalità visualizzazione: IE8
3) Numero di righe della singola colonna molto alto (>800)
In questo caso non riesco mai a finire la tabella, perchè durante la renderizzazione di una colonna (non sempre la stessa) mi viene ritornato un messaggio da IE che dice che a causa di problemi di visualizzazione Explorer è costretto a ricaricare la pagina in "visualizzazione compatibilità".
In "visualizzazione compatibilità" tutto fila liscio, ma vorrei riuscire a scrivere del codice che funzioni per IE8 e non forzare Explorer a lavorare in "visualizzazione compatibilità".
Sto cercando quindi di capire che cos'è nel codice che potrebbe causare quel problema, ma per ora nessun risultato.
Ho anche provato a realizzare la renderizzazione con la libreria DOM, ma il risultato è lo stesso:
function tableColInsertAt (tableID,colIndex,rowsValues,cellIntClassName,cellDataClassName) {
var table = document.getElementById(tableID);
var rows = table.getElementsByTagName("tr");
var numRows = rows.length;
var row, cell;
var applyCssClass = (arguments.length > 3);
for (var r = 0; r < numRows; r++) {
row = (rows[r]);
cell = document.createElement("td");
cell.appendChild(document.createTextNode(rowsValues[r]));
row.appendChild(cell);
if (applyCssClass) {
var cellClassName = (r == 0) ? cellIntClassName : cellDataClassName ;
cell.className = cellClassName;
}
}
}
Qualcuno mi può aiutare?
Grazie e ciao!
Andrea