Hi all,
In a grid I want use these two plugins ux.LiveSearchGrid and ux.RowExpander.
When I use the RowExpander, the LiveSearchPlugin don't match result.
I made a simple modification in the LiveSearchPlugin. It's not the better way.
I think the best is to make a recursive search, but for my needed (search only in the first level cells) it's suffisant.
Here my modifycation in the onTextFieldChange function:
Code:
me.store.each(function(record, idx) {
var td = Ext.fly(me.view.getNode(idx)).down('td'),
cell, matches, cellHTML;
while(td) {
var treatedTd = td;
var subTd = td.down('td');
if(subTd)
treatedTd = subTd;
cell = treatedTd.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(me.searchRegExp, function(m) {
count += 1;
if (Ext.Array.indexOf(me.indexes, idx) === -1) {
me.indexes.push(idx);
}
if (me.currentIndex === null) {
me.currentIndex = idx;
}
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 = treatedTd.next();
}
}, me);
In bold, my modification.
If, another person have a better solution, please share.