scottdurow / SparkleXrm

An open-source library for building Dynamics CRM XRM solutions using Script#, jQuery & Knockoutjs.
MIT License
265 stars 197 forks source link

Refreshed Connections UI - QuickFindQueryRecordLimit exceeded. #88

Open Stanzarectah opened 8 years ago

Stanzarectah commented 8 years ago

Hi,

I am getting this when I Click on the '+' icon of the Connection subgrid and then after clicking onto the 'Connect To' magnifying glass icon.

I have tried unchecking the quick find records limit in the system settings. After that, I don't the QuickFindQueryRecordLimit exceeded anymore but the green record indicator keeps spinning and I get no records returned.

However, in Chrome I am able to get records to appear in the list - only after a short delay (about 5 - 10 secs)

My custom parameters are:

entities=account&pageSize=100

We have about 33,500 account records in the system

I am using IE10 on MS CRM 2015 Online Update 1.

Please advise.

Thanks

scottdurow commented 8 years ago

If you type a search term in the lookup and press return do yo get a list of matching results? This is a similar issue to https://github.com/scottdurow/SparkleXrm/issues/40 I'll have to include a check to display a message if there are too many results and ask the user to enter a search term. Alternatively we could not search with an empty search term?

Stanzarectah commented 8 years ago

Awesome Scott thanks for the reply, there is a slight delay but yes, we do a get a list of records eventually and we can select it. We just need to advise users that they need to hit 'ENTER' after they have in a search term.

Cheers

gobusnuts commented 8 years ago

I've done some debugging on this and found that the icon button starts working after commenting two lines in the XrmLookupBinding.cs source file.

` // handle the field changing inputField.Change(delegate(jQueryEvent e) { string inputValue = inputField.GetValue(); if (inputValue != _value.Name) { // The name is different from the name of the lookup reference // search to see if we can auto resolve it

//Commented
//TrySetObservable(valueAccessor, inputField, null,false); AutoCompleteRequest lookup = new AutoCompleteRequest(); lookup.Term = inputValue; Action<AutoCompleteItem[]> lookupResults = delegate(AutoCompleteItem[] results) { int selectableItems = 0; // If there is only one, then auto-set if (results != null) { foreach (AutoCompleteItem item in results) { if (isItemSelectable(item)) { selectableItems++; } if (selectableItems > 2) break; } }

                    if (selectableItems == 1)
                    {
                        // There is only a single value so set it now
                        setValue(results[0], false);
                    }
                    else
                    {

//Commented
//inputField.Value(String.Empty); } };

                queryDelegate(lookup, lookupResults);
            }
        });

` It seems these two lines clear the value of the input field when focus is lost. I'm still trying to understand the code so I have not found a solution that does not change the actual working of the lookup control.

If someone finds the solution, please let me know.