This is a migrated thread and some comments may be shown as answers.

RadComboBox not adjusting its height while being filtered

0 Answers 107 Views
ComboBox
This is a migrated thread and some comments may be shown as answers.
Lorenzo
Top achievements
Rank 1
Lorenzo asked on 11 Jan 2018, 02:32 PM

Due to our company policy, we had to update Telerik DLLs. 
We jumped directly from v2012.1.411.40 to v2017.3.913.40 on a huge old project. 

While testing that everything was more or less working, I noticed that RadComboBox control stopped to auto-adjust its height while is being filtered with custom text. 

I had an in-depth look at the .js code utilized by the combo in  v2012.1.411.40 in order to understand how it was working, and I noticed that the combo firstly is being filtered by the function 'RadComboBox.prototype.highlightAllMatches'  and then its height is manipulated based on how many items are displayed.  

Looking into the latest version js code, I noticed that while the procedure is more or less the same, the function highlightAllMatches will be applied asynchronously, as you can see in line 26 of the following code.

 

This causes that the function that adjusts height based on the items runs before of the filtering, resulting in a wrong height. 

 

To overcome this problem I've basically overridden the v2017 highlightAllMatches  with the v2012 one, and everything started working as intended.


Despite the workaround passed all tests,
I would know if there is a more elegant way to solve this problem.

01.var a = Telerik.Web.UI;
02.a.RadComboBox.prototype.highlightAllMatches = function(f) {
03.    if (this.get_filter() == a.RadComboBoxFilter.None) {
04.        return;
05.    }
06.    if (this.get_highlightedItem()) {
07.        this.get_highlightedItem().unHighlight();
08.    }
09.    var d = this.getLastWord(f, this._getTrimStartingSpaces());
10.    if (this._getLastSeparator(f) == f.charAt(f.length - 1)) {
11.        this._removeEmTagsFromAllItems();
12.        this.setAllItemsVisible(true);
13.        return;
14.    }
15.    var c = this.get_filter()
16.      , b = function(h, g, i) {
17.        var j = h.highlightText(g, i);
18.        h.set_visible(j);
19.    }
20.      , e = function() {
21.        if (this.get_markFirstMatch()) {
22.            this.highlightFirstVisibleEnabledItem();
23.        }
24.        this._resizeDropDown();
25.    };
26.    this._process(0, c, d, b, e);
27.}
28.;
I've provided some screenshot as an example, I hope that it will be clear. 
thank you

No answers yet. Maybe you can help?

Tags
ComboBox
Asked by
Lorenzo
Top achievements
Rank 1
Share this question
or