Domanda

Sto cercando di usare le checkBox Dojo (1.3) per far apparire / nascondere le colonne in una griglia Dojo visualizzata sotto le checkBox. Ho avuto quella funzionalità per funzionare bene, ma volevo organizzare le mie checkBox un po 'meglio. Quindi ho provato a metterli in un tavolo. La mia funzione dojo.addOnLoad è simile a questa:

dojo.addOnLoad(function(){
    var checkBoxes = [];
    var container = dojo.byId('checkBoxContainer');
    var table = dojo.doc.createElement("table");
    var row1= dojo.doc.createElement("tr");
    var row2= dojo.doc.createElement("tr");
    var row3= dojo.doc.createElement("tr");

    dojo.forEach(grid.layout.cells, function(cell, index){
        //Add a new "td" element to one of the three rows
    });

    dojo.place(addRow, table);
    dojo.place(removeRow, table);
    dojo.place(findReplaceRow, table);

    dojo.place(table, container);
});

La cosa frustrante è:

  1. Usando il debugger Dojo posso vedere che l'HTML viene generato correttamente per la tabella.
  2. Posso prendere quell'HTML e mettere solo la tabella in un file HTML vuoto e il rendering delle checkBox nella tabella va bene.
  3. Il rendering della pagina è corretto in Firefox, ma non in IE6.

L'HTML che viene generato è simile al seguente:

<div id="checkBoxContainer">
    <table>
        <tr>
            <td>
                <div class="dijitReset dijitInline dijitCheckBox"
                    role="presentation" widgetid="dijit_form_CheckBox_0"
                    wairole="presentation">
                    <input class="dijitReset dijitCheckBoxInput"
                        id="dijit_form_CheckBox_0"
                        tabindex="0" type="checkbox"
                        name="" dojoattachevent=
                        "onmouseover:_onMouse,onmouseout:_onMouse,onclick:_onClick"
                        dojoattachpoint="focusNode" unselectable="on"
                        aria-pressed="false"/>
                </div>
                <label for="dijit_form_CheckBox_0">
                    Column 1
                </label>
            </td>
            <td>
                <div class="dijitReset dijitInline dijitCheckBox"
                    role="presentation" widgetid="dijit_form_CheckBox_1"
                    wairole="presentation">
                    <input class="dijitReset dijitCheckBoxInput"
                        id="dijit_form_CheckBox_1"
                        tabindex="0" type="checkbox"
                        name="" dojoattachevent=
                        "onmouseover:_onMouse,onmouseout:_onMouse,onclick:_onClick"
                        dojoattachpoint="focusNode" unselectable="on"
                        aria-pressed="false"/>
                </div>
            </td>
        </tr>
        <tr>
            ...
        </tr>
    </table>
</div>

Avrei pubblicato sui forum ufficiali DOJO, ma dice che sono deprecati e stanno usando una mailing list ora. Hanno detto che se una mailing list non funziona per te, usa StackOverflow.com. Quindi eccomi qui!

È stato utile?

Soluzione

Sembra che ti sia dimenticato di creare un <tbody> elemento.

Altri suggerimenti

Ho riscontrato anche questo problema durante il tentativo di generare una tabella utilizzando dojo in IE7. L'html è presente ma non viene visualizzato nulla. Ancora una volta, la soluzione è usare i tag thead, tbody.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top