- Home
- Forum
- Angular - EJ 2
- Get count async
Get count async
Hi Team,
I working on application which will return many objects to grid.
When I send query to API I got back many records and total count of SQL table.
However, that cause slowly SQL query. When I remove COUNT(*) from query then I got good speed.
Can I update total count dynamically, for example.
Get results from table to grid, then send query to API for count of table.
After I got total count, cache total count on client side. When I change Filter, then I call again count and cache.
Regards
SIGN IN To post a reply.
4 Replies
MA
Marko
May 23, 2019 01:28 PM UTC
Hi,
How I can set totalcount to grid over typescript?
TS
Thavasianand Sankaranarayanan
Syncfusion Team
May 27, 2019 12:56 PM UTC
Hi Marko,
Greeting from Syncfusion support.
Query 1: Get results from table to grid, then send query to API for count of table.
We have validated the provided information and by default we have an option to handle on-demand grid actions using data manager and its helps you to improve better performance for large data.
Please refer the below code example and documentation for more information.
[fetchdata.component.html]
|
<ejs-grid #grid [dataSource]='data' allowGrouping="true" allowFiltering="true" allowPaging="true" allowSorting="true" height="320">
<e-columns>
<e-column field='OrderID' headerText='Order ID' isPrimaryKey=true width='150'></e-column>
<e-column field='CustomerID' headerText='Customer Name' width='150'></e-column>
<e-column field='ShipCity' headerText='ShipCity' width='150' textAlign='Right'></e-column>
</e-columns>
</ejs-grid> |
|
ngOnInit(): void {
this.data = new DataManager({
url: 'Home/UrlDatasource',
adaptor: new UrlAdaptor
});
} |
|
public IActionResult UrlDatasource([FromBody]DataManagerRequest dm)
{
IEnumerable DataSource = OrdersDetails.GetAllRecords();
DataOperations operation = new DataOperations();
. . . . .
int count = DataSource.Cast<OrdersDetails>().Count(); // Total Count of the Grid DataSource
if (dm.Skip != 0)
{
DataSource = operation.PerformSkip(DataSource, dm.Skip); //Paging
}
if (dm.Take != 0)
{
DataSource = operation.PerformTake(DataSource, dm.Take);
}
return dm.RequiresCounts ? Json(new { result = DataSource, count = count}) : Json(DataSource);
}
|
Sample : http://www.syncfusion.com/downloads/support/directtrac/general/ze/angular-core-server-group784468318
Help documentation https://ej2.syncfusion.com/angular/documentation/grid/edit/#url-adaptor
If the above solution does not meet your requirement then share more details and code example that will helpful for us to provide a better solution as soon as possible.
Query 2: How I can set totalcount to grid over typescript?
By default if we using UrlAdaptor for Grid data binding then we return the total count from server side itself. So, please share more details on requirement to provide better assistance from our end.
Regards,
Thavasianand S.
MA
Marko
May 27, 2019 01:05 PM UTC
Hi,
That resolution will not work for me.
I have exposed store procedure which handle data.
There is one store procedure which will get total count of table. That store procedure call only when Data is initialize, and when filter changed.
So I want dynamically set total count to grid. When I only change filter then I call store procedure which will return total count of records in specific table.
Also, I don't use url adaptor, I use observables.
TS
Thavasianand Sankaranarayanan
Syncfusion Team
May 30, 2019 01:26 PM UTC
Hi Marko,
Thanks for your update.
We have analyzed your requirement and we suggest you to use the forkJoin function of observables to achieve your requirement. You can create observables and get the result (JSON data) and create another observables to get the count value after that you can join both the observables by using forkJoin and return the final result to the Grid.
Please refer the below reference link for more information.
Regards,
Thavasianand S.
SIGN IN To post a reply.
- 4 Replies
- 2 Participants
-
MA Marko
- May 23, 2019 10:46 AM UTC
- May 30, 2019 01:26 PM UTC