Hi
When I use a kendo.data.DataSource of type jsdo, and set serverPaging to true and pageSize to something large, I get all the data from my OE Appserver service.
When I use a progress.data.JSDO({ with the same settings) I only ever get 100 records.
How can I get a progress.data.JSDO datasource to return ALL records to the client? (I am implementing a Kendo PivotGrid hence need all records).
Hello,
I would like to see your code to understand better what you are trying to do.
By default, the kendo.data.DataSource of type jsdo would return all the records when serverPaging is false.
Are you trying to use "jsdo" as the type for the PivotDataSource?
Using "jsdo" as the type of the DataSource for the PivotGrid component is not supported.
We have a note on this in the documentation:
documentation.progress.com/.../oemobile1151
You should be able to use the PivotGrid component by specify the data using the data property of the dataSource.
The following link lists an example on using the PivotGrid with local data:
demos.telerik.com/.../local-flat-data-binding
You can use JSDO (progress.data.JSDO) directly by calling the fill() or read() method to query the records from the server and get all the records locally.
Then you can use the getData() API of the JSDO to obtain an array with the records and populate the data property.
Alternatively, you could use an invoke method if you need to return data in a format different than the one used by the JSDO itself.
Please let me know if you need more information.
I hope this helps.
Hello,
I would like to see your code to understand better what you are trying to do.
By default, the kendo.data.DataSource of type jsdo would return all the records when serverPaging is false.
Are you trying to use "jsdo" as the type for the PivotDataSource?
Using "jsdo" as the type of the DataSource for the PivotGrid component is not supported.
We have a note on this in the documentation:
documentation.progress.com/.../oemobile1151
You should be able to use the PivotGrid component by specify the data using the data property of the dataSource.
The following link lists an example on using the PivotGrid with local data:
demos.telerik.com/.../local-flat-data-binding
You can use JSDO (progress.data.JSDO) directly by calling the fill() or read() method to query the records from the server and get all the records locally.
Then you can use the getData() API of the JSDO to obtain an array with the records and populate the data property.
Alternatively, you could use an invoke method if you need to return data in a format different than the one used by the JSDO itself.
Please let me know if you need more information.
I hope this helps.
Flag this post as spam/abuse.
Click here to report this email as spam.
This email is security checked and subject to the disclaimer on web-page: http://www.capita.co.uk/email-disclaimer.aspx
[/collapse]Hello Ray,
You are welcome.
Thank you for including the code for the examples. They helped to clarify what is happening.
It looks like the Business Entity is coded to 100 records when it does not have a filter specified.
Please notice that only "name" is a valid initialization property in the first example. The other properties are just ignored since the parameter is just an object in JavaScript.
The fill() method sends a request with a query. Somehow, the code in your Business Entity returns 100 records when a filter is not specified.
The fill() method also allows an option where a filter object with top and skip can be specified.
Example:
jsdo.fill({top: 10000, skip: 0});
This would solve the issue. However, the real fix would be in the Business Entity code.
You could look at the network request with the web inspector to see the details of the GET request: the parameters for the request and data that for the response.
If needed for debugging, you could just take the request outside the PivotGrid example.
For instance, you could adapt the following program to test fill() with your Business Entity:
oemobiledemo.progress.com/.../example013. html
When you use the Kendo UI DataSource of type "jsdo" with serverPaging false, the code internally, calls fill() with no arguments. The Kendo UI DataSource would apply the pageSize locally to the records returned from the server but in this case it would be 100 records.
With serverPaging true, the Kendo UI DataSource specifies paging parameters. The code internally, calls fills() using these parameters. If you are using the JSON Filter Pattern (JFP), then the request include top and skip. It would look like { top: 10000, skip: 0} (the Network tab would show this information). The JFP code then would return the records based on these parameters.
Please take a look at the Business Entity code to see what it does when it does not receive any filter parameters.
I hope this helps,
Edsel
Hello Ray,
You are welcome.
Thank you for including the code for the examples. They helped to clarify what is happening.
It looks like the Business Entity is coded to 100 records when it does not have a filter specified.
Please notice that only "name" is a valid initialization property in the first example. The other properties are just ignored since the parameter is just an object in JavaScript.
The fill() method sends a request with a query. Somehow, the code in your Business Entity returns 100 records when a filter is not specified.
The fill() method also allows an option where a filter object with top and skip can be specified.
Example:
jsdo.fill({top: 10000, skip: 0});
This would solve the issue. However, the real fix would be in the Business Entity code.
You could look at the network request with the web inspector to see the details of the GET request: the parameters for the request and data that for the response.
If needed for debugging, you could just take the request outside the PivotGrid example.
For instance, you could adapt the following program to test fill() with your Business Entity:
oemobiledemo.progress.com/.../example013. html
When you use the Kendo UI DataSource of type "jsdo" with serverPaging false, the code internally, calls fill() with no arguments. The Kendo UI DataSource would apply the pageSize locally to the records returned from the server but in this case it would be 100 records.
With serverPaging true, the Kendo UI DataSource specifies paging parameters. The code internally, calls fills() using these parameters. If you are using the JSON Filter Pattern (JFP), then the request include top and skip. It would look like { top: 10000, skip: 0} (the Network tab would show this information). The JFP code then would return the records based on these parameters.
Please take a look at the Business Entity code to see what it does when it does not receive any filter parameters.
I hope this helps,
Edsel
Flag this post as spam/abuse.
Click here to report this email as spam.
This email is security checked and subject to the disclaimer on web-page: http://www.capita.co.uk/email-disclaimer.aspx
[/collapse]Hi Ray, I assume you are using our generic JSDO service: It's designed so that when GET request does not specify the top property, it returns a default maximum of 100 records. So when the Kendo DataSource with the JSDO flavor requests a large top value as part of the JFP you will get more than 100 records.
Otherwise the limit of 100 records kicks in.
As a quick for, increase the initial setting of oFetchDataRequest:BatchSize in the GetData method of the Consultingwerk.OERA.JsdoGenericService.Resource class.
As I'd like to keep a safe maximum of records to be returned to the caller, we should discuss an alternative pattern how a client could request all rows regardless of a top value, maybe something like:
/Resource/{BusinessEntityName}/all?filter=...
vs.
/Resource/{BusinessEntityName}?filter=...
Hi Ray, I assume you are using our generic JSDO service: It's designed so that when GET request does not specify the top property, it returns a default maximum of 100 records. So when the Kendo DataSource with the JSDO flavor requests a large top value as part of the JFP you will get more than 100 records.
Otherwise the limit of 100 records kicks in.
As a quick for, increase the initial setting of oFetchDataRequest:BatchSize in the GetData method of the Consultingwerk.OERA.JsdoGenericService.Resource class.
As I'd like to keep a safe maximum of records to be returned to the caller, we should discuss an alternative pattern how a client could request all rows regardless of a top value, maybe something like:
/Resource/{BusinessEntityName}/all?filter=...
vs.
/Resource/{BusinessEntityName}?filter=...
Flag this post as spam/abuse.
Click here to report this email as spam.
This email is security checked and subject to the disclaimer on web-page: http://www.capita.co.uk/email-disclaimer.aspx
[/collapse]