ExtJS 4突出显示网格中与文本字段

时间:2016-04-13 00:35:52

标签: extjs grid highlight

我看到有关此主题的类似帖子,但在这种情况下我遇到了实施问题,所以我想知道是否有人可以帮我解决这个问题。

我有一个网格面板和一个文本字段,这两个组件都是Sencha ExtJS 4.2。

我创建了一个处理程序方法,它将接收文本字段值并按如下方式处理:

markTextInGrid: function(searchFieldValue) {
    var me = this,
        tktListGrid = this.getTicketListGrid(),
        tktListGridStore = tktListGrid.getStore(),
        tktListGridView = tktListGrid.getView();

    tktListGridStore.each(function(record, idx) {
        try {
            var td = Ext.fly(me.tktListGridView.getNode(idx)).down('td'),
            cell, matches, cellHTML;

            while(td) {
                 cell = td.down('.x-grid-cell-inner');
                 matches = cell.dom.innerHTML.match(me.tagsRe);
                 cellHTML = cell.dom.innerHTML.replace(me.tagsRe, me.tagsProtect);

                 // populate indexes array, set currentIndex, and replace wrap matched string in a span
                 cellHTML = cellHTML.replace(searchFieldValue, function(m) {
                    return '<span class="' + me.matchCls + '">' + m + '</span>';
                 });
                 // restore protected tags
                 Ext.each(matches, function(match) {
                    cellHTML = cellHTML.replace(me.tagsProtect, match); 
                 });
                 // update cell html
                 cell.dom.innerHTML = cellHTML;
                 td = td.next();
             }
        } catch (e) {}



    });

}

我使用了try-catch,因为出于某种原因,我并不总是能够在down行使用“Ext.fly”。有时它返回“未定义”但不确定原因。在LKiveSearchGrid的例子中,它似乎总是有效,但对于我的情况却不一样。

我定义了以下组件:

    tagsRe: /<[^>]*>/gm,

    tagsProtect: '\x0f',

    matchCls: 'x-livesearch-match',

我尝试了那段代码,但没有突出显示网格中的单词。

有人可以帮我一把吗?我会继续研究。

提前致谢。

0 个答案:

没有答案