<SfGrid ID="Grid" @ref="Grid" DataSource="@Orders" AllowPaging="true">
<GridEvents RowDataBound="RowDataBoundHandler" DataBound="DataBoundHandler" TValue="Order"></GridEvents>
<GridPageSettings PageSize="5"></GridPageSettings>
. . .
</SfGrid>
@code{
SfGrid<Order> Grid { get; set; }
public List<Order> Orders { get; set; }
bool intial { get; set; } = true;
protected override async Task OnInitializedAsync()
{
await Task.Delay(4000);
Orders = Enumerable.Range(1, 75).Select(x => new Order()
{
OrderID = 1000 + x,
CustomerID = (new string[] { "ALFKI", "ANANTR", "ANTON", "BLONP", "BOLID" })[new Random().Next(5)],
Freight = 2.1 * x,
OrderDate = DateTime.Now.AddDays(-x),
}).ToList();
}
. . .
public void DataBoundHandler(object args)
{
if (intial)
{
Grid.ShowSpinner(); //show spinner
intial = false;
}
}
public void RowDataBoundHandler(RowDataBoundEventArgs<Order> args)
{
Grid.HideSpinner(); //hide spinner
}
} |
Grid.SelectRow(index); //example Grid.SelectRow(3)
Grid>Search(SearchKey) //example: Grid.Search(“alfki”) |
Hi,
I've the similar issue , I have a blazor server page where I had to display into an sfgrid some data coming from sql server which take around 10 seconds to load from.
The problem is that when I
click link page or try to access directly by url, nothing is shown
(neither the sfgrid itself) until all data are loaded and displayed into
the page.
The same issue is still found in your sample code
which i twicked a little to add Logger to see when events are fired and
rised Task.Delay from 4000 to 10000 to simulate my scenario.
Here's sample code modified :
@page "/testgridbusy"
@using Syncfusion.Blazor.Grids
@using Syncfusion.Blazor.Spinner
@using Microsoft.Extensions.Logging
@inject ILogger<TestGridBusy> logger
<SfGrid ID="Grid" @ref="Grid" DataSource="@Orders" AllowPaging="true">
<GridEvents RowDataBound="RowDataBoundHandler" DataBound="DataBoundHandler" TValue="Order"></GridEvents>
<GridPageSettings PageSize="5"></GridPageSettings>
</SfGrid>
@code{
SfGrid<Order> Grid { get; set; }
public List<Order> Orders { get; set; }
bool intial { get; set; } = true;
protected override async Task OnInitializedAsync()
{
logger.LogInformation("[{0}] Entered OnInitializedAsync()!", DateTime.Now);
await Task.Delay(10000);
Orders = Enumerable.Range(1, 75).Select(x => new Order()
{
OrderID = 1000 + x,
CustomerID = (new string[] { "ALFKI", "ANANTR", "ANTON", "BLONP", "BOLID" })[new Random().Next(5)],
Freight = 2.1 * x,
OrderDate = DateTime.Now.AddDays(-x),
}).ToList();
}
public void DataBoundHandler(object args)
{
if (intial)
{
logger.LogInformation("[{0}] Entered DataBoundHandler()!", DateTime.Now);
Grid.ShowSpinner(); //show spinner
intial = false;
}
}
public void RowDataBoundHandler(RowDataBoundEventArgs<Order> args)
{
Grid.HideSpinner(); //hide spinner
}
public class Order
{
public int? OrderID { get; set; }
public string CustomerID { get; set; }
public DateTime? OrderDate { get; set; }
public double? Freight { get; set; }
}
}
What
I'd like to achieve is when I access sample page , it will be shown
immediatly empty grid with spinning circle that should disappears when
grid is populated, is it possible to do this ?
I just recorded a video to try to explain better my point : https://www.screencast.com/t/goMi3JARE
Thank you
Best Regards,
Giacomo
Hi Rahul,
thank you for your reply, will wait for your answer
Regards,
Giacomo
Hi Vignesh,
thx for clarifications!
Regards,
Giacomo