使用dGrid删除行时dijit多个小部件未被解析(dgrid.io)

时间:2015-12-22 13:51:16

标签: dojo dgrid

我使用dGrid 0.4.1-dev(dgrid.io)和自定义格式化程序(我尝试使用自定义渲染器)返回包含Dijit小部件的原始HTML ,在页面加载期间,所有小部件已被正确解析但在排序,分页或滚动(OnDemandGrid)时它完全被破坏。

在我的示例中,我在图标上使用工具提示小部件(声明模式,请参阅底部“返回单元格的HTML”)。

在页面加载:

enter image description here

滚动后,排序,分页......:

enter image description here

返回单元格的HTML(格式化程序):

<div data-dojo-type="dijit/Tooltip" id="comxDynElement_101_dijit_1" data-dojo-props="connectId:'comxDynElement_101',position:['above']">Dupliquer cette facture</div><a href="..." id="comxDynElement_101"><i class="fa fa-clone"></i></a>
<div data-dojo-type="dijit/Tooltip" id="comxDynElement_102_dijit_1" data-dojo-props="connectId:'comxDynElement_102',position:['above']">Télécharger cette facture</div><a id="comxDynElement_102" href="..."><i class="fa fa-file-pdf-o"></i></a>
<div data-dojo-type="dijit/Tooltip" id="comxDynElement_103_dijit_1" data-dojo-props="connectId:'comxDynElement_103',position:['above']">Voir cette facture</div><a id="comxDynElement_103" href="..."><i class="fa fa-eye"></i></a>

我的格式化程序:

function (item) {
     return item;
}

1 个答案:

答案 0 :(得分:0)

正在构建小部件并由Dojo Parser在页面加载时启动。在页面加载后向页面添加新的声明性html时,不会自动解析这些窗口小部件。你需要手动完成。

例如,应该可以在网格的renderRow函数中手动调用解析器。可以找到一个示例here

所以下面的代码可以工作:

   require([
        'dgrid/OnDemandList',
        'dojo/parser'
    ], function (OnDemandList,parser) {
        var list = new OnDemandList({
            collection: myStore, // a dstore collection
            renderRow: function (object, options) {
                var div = document.createElement('div');
                div.appendChild(document.createTextNode(object.myField));
                // only 'parse' new row, not whole document again.
                parser.parse(div);
                return div;
            }
        });
    });