cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Kristoffer88
Advocate I
Advocate I

PCF Model Driven App - Not all records are loaded (Dataset)

Hey.

 

It seems that some of the properties in the dataset, is not behaving the way i would think.

 

1:  context.parameters.dataset.paging.totalResultCount is sometimes showing -1 (Is this property even supported?, it is in the typescript definitions)

 

2: Randomly, dataSet.paging.hasNextPage is undefined, while dataSet.loading is false, but all the records is not loaded into the dataset yet.

 

3: Sometimes, dataSet.paging.loading is true, but all records are in the dataset (create unnecessary extra dataload)

 

 

I have created this test script:

 

I have a view with 15500 records, and 15-20 % of the time, not all records are loaded into the dataset, am i missing something here?

 

 

 

 

public init(context: ComponentFramework.Context<IInputs>, notifyOutputChanged: () => void, state: ComponentFramework.Dictionary, container: HTMLDivElement) {
        this.container = container;
        var dataSet = context.parameters.Tasks;    
        if (dataSet.paging.totalResultCount > 0)
              dataSet.paging.setPageSize(dataSet.paging.totalResultCount);
        else  dataSet.paging.setPageSize(5000);    
    }

 

 

 

 

 

 

 

 

 public updateView(context: ComponentFramework.Context<IInputs>): void {
        var dataSet = context.parameters.Tasks;    
       
       
        //Debugging
        if (dataSet.loading) {
            //If we know the totalResult, we can check if all are loaded
            if (dataSet.paging.totalResultCount > 0) { 
                if (dataSet.sortedRecordIds.length != dataSet.paging.totalResultCount) {
                    console.log("Length not same as totalcount",{...dataSet})
                    return;
                }
                console.log("Length same as totalcount",{...dataSet})
            }
            //If the total result is unknown, we need to return to ensure all is loaded
            else {
                console.log("resuultCountUnknown",{...dataSet})
                return;
            }
         
        } 
        else {
            console.log("Dataset not loading",{...dataSet})
            console.log("Has next page:", dataSet.paging.hasNextPage )
            
        }

        //if data set has additional pages retrieve them before running anything else
        if (dataSet.paging.hasNextPage ) {                 
           console.log({...dataSet})          
           dataSet.paging.loadNextPage();
           this.count++;
           console.log("Load count", this.count);
           return;
        }
      
        console.timeEnd("dataload");
        console.log("Count",this.count);      
        alert(dataSet.sortedRecordIds.length);  


        ReactDOM.render(React.createElement(App, { context }), this.container);
    }

 

 

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
Kristoffer88
Advocate I
Advocate I

This was a error on our tenant. There was a onFormLoad script, that called Xrm.Page.data.refresh(true) after a call to update some rollup fields.

View solution in original post

3 REPLIES 3
DianaBirkelbach
Super User
Super User

Hi @Kristoffer88 , 

I'm not sure about all details (since I've used loadExactPage instead ot loadNext Page) but maybe this brings you a step forward:

"paging.totalResultCount" is documented here https://docs.microsoft.com/en-us/powerapps/developer/component-framework/reference/paging#totalresul... 

but I wouldn't expect it to be set in the init method. I suggest to set the page size allways on 5000 (this should work also if there are less records)

dataSet.paging.setPageSize(5000);   

 If I see right, if  

loading===true && dataSet.sortedRecordIds.length === dataSet.paging.totalResultCount

 there is no return, so you might land to loadNextPage() call, while still loading. 

About unceressary loads, I've seen similar behavior in my tests; but I work with react and let it treat the unnecessary calls.

Hope this helps. If not, please let me know.

Kind regards,

Diana

Thanks for the reply Diana.

 

The problem i am seeing, is that i cannot trust the loading and hasNextPage properties, sometimes loading is false og hasNextPage is false/undefined, but the dataset is not fully loaded yet.

 

 

I will try to use loadExactPage instead, and then i will try to upload the code as a solution, instead of using fiddler for testing. I suspect it could be something releated to that.

 

Kristoffer88
Advocate I
Advocate I

This was a error on our tenant. There was a onFormLoad script, that called Xrm.Page.data.refresh(true) after a call to update some rollup fields.

View solution in original post

Helpful resources

Announcements
PA User Group

Welcome to the User Group Public Preview

Check out new user group experience and if you are a leader please create your group

Power Apps Community Call

Monthly Power Apps Community Call

Did you miss the call?? Check out the Power Apps Community Call here!

secondImage

Experience what’s next for Power Apps

See the latest Power Apps innovations, updates, and demos from the Microsoft Business Applications Launch Event.

Power Platform ISV STudio

Power Platform ISV Studio

ISV Studio is the go-to Power Platform destination for ISV’s to monitor & manage applications post-AppSource publish.

Users online (56,889)