Declined
Last Updated: 03 Dec 2020 12:51 by ADMIN

I'm using the OnRead / OnCreate / OnUpdate / OnDelete events of the TelerikGrid. Most examples do not use OnRead to load data, instead using OnInitializedAsync().

When performing an update two events will fire, such as OnCreate and then OnRead to reload the grid data - which makes sense. The problem is OnRead is not awaited, so in effect the Read method can reload the data prior to data being updated on the server. This is especially the case if I have a JavaScript delete confirmation prompt.

What's my best way forward? Not use OnRead and use OnInitializedAsync instead? Somehow trigger OnRead again (which would effectively trigger it twice)?

Thanks,

Dave

 

Completed
Last Updated: 01 Dec 2020 16:04 by ADMIN
Release 2.19.0

On initialization of the Grid the oDataString is correct, but when I apply a Filter (through the FilterMenu) or apply a sort to a Grid column the ToODataString extension method throws with null reference exception. If the FilterMode is set to FilterRow or revert back to 2.16.0 everything works as expected. 

<AdminEdit>

This bug extends to the functionality of the FilterMenu as a feature and is not connected only to the ToODataString();

</AdminEdit>

Completed
Last Updated: 23 Nov 2020 11:16 by ADMIN
Release 2.20.0

When I set more than one group on StateInit, I get an error - either the browser closes, or I see a stack overflow.

 

Duplicated
Last Updated: 20 Nov 2020 17:14 by ADMIN
Created by: Scott Mappes
Comments: 1
Category: Grid
Type: Feature Request
0

I'm using the Grid with a GridToolbar containing a GridSearchBox.  I have the following requirement that I wish to be able to implement:

When focus is on the GridSearchBox and I hit Esc I would like to clear the search text.

Completed
Last Updated: 20 Nov 2020 11:49 by ADMIN
Release 2.20.0
Created by: Ryan
Comments: 2
Category: Grid
Type: Feature Request
28
Please add a feature to export the grid to a CSV file.
Completed
Last Updated: 10 Nov 2020 10:04 by ADMIN
Release 2.19.0
Created by: Jan Hindrik
Comments: 0
Category: Grid
Type: Bug Report
4

Sample reproducible with workaround (to initialize the data source so it is not null) is below

Sample error and stack trace

ArgumentNullException: Value cannot be null. (Parameter 'source')


System.Linq.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument)
System.Linq.Enumerable.ToList<TSource>(IEnumerable<TSource> source)
Telerik.Blazor.Components.TelerikGrid<TItem>.SetAggregateResults(IEnumerable<AggregateResult> results)
Telerik.Blazor.Components.Common.DataBoundComponent<TItem>.AggregateData()

 

<TelerikGrid Data=@GridData Pageable="true" Height="300px">
    <GridColumns>
        <GridColumn Field="@(nameof(Employee.EmployeeId))">
            <FooterTemplate>
                some footer
            </FooterTemplate>
        </GridColumn>
        <GridColumn Field=@nameof(Employee.Salary) Title="Salary">
        </GridColumn>
        <GridColumn Field=@nameof(Employee.Name)>
        </GridColumn>
    </GridColumns>
</TelerikGrid>

@code {
    public List<Employee> GridData { get; set; } // = new List<Employee>(); // workaround

    public class Employee
    {
        public int EmployeeId { get; set; }
        public string Name { get; set; }
        public decimal Salary { get; set; }
    }
}

 

Completed
Last Updated: 06 Nov 2020 08:28 by ADMIN
Release 2.19.0

At the moment, the focus remains on the cell. It should be in the input so the user does not have to perform an extra action (say, click with the mouse) in order to edit data.

This also applies to inserting a new row - the first cell should be focused.

Unplanned
Last Updated: 04 Nov 2020 15:20 by ADMIN

When I have a grid with Reordable=true and a ComboBox in the HeaderTemplate, I cannot click in the combo box because the reordable functionality prevents it.

---

ADMIN EDIT

This could be exposed through a data- attribute that you could add to your DOM elements so that the grid can know to skip them, for example:

<TelerikGrid Data="@MyData" Height="300px" Pageable="true" Sortable="true" FilterMode="@GridFilterMode.FilterMenu" Reorderable="true">
    <GridColumns>
        <GridColumn Field="@(nameof(SampleData.ID))" Title="This title will not be rendered">
            <HeaderTemplate>
                Continent <br />
                <div style="text-align:center">Id</div>
                <div @onclick:stopPropagation="true" data-draggable="false">
                    <TelerikComboBox Data="@Continents" Filterable="true" class="headerCombo"
                                     @bind-Value="@SelectedContinentId"
                                     TextField="@nameof(Continent.Name)" ValueField="@nameof(Continent.Id)" Id="MyId">
                    </TelerikComboBox>
                </div>
            </HeaderTemplate>
        </GridColumn>
        <GridColumn Field=@nameof(SampleData.Name) Title="First Name" />
    </GridColumns>
</TelerikGrid>

@code {
    /* Grid */
    string result { get; set; }
    void DoSomething()
    {
        result = $"button in header template clicked on {DateTime.Now}, something happened";
    }

    public class SampleData
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public DateTime HireDate { get; set; }
    }

    public IEnumerable<SampleData> MyData = Enumerable.Range(1, 50).Select(x => new SampleData
    {
        ID = x,
        Name = "name " + x,
        HireDate = DateTime.Now.AddDays(-x)
    });

    /* ComboBox */

    public class Continent
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
    IEnumerable<Continent> Continents = new List<Continent>() { new Continent { Id = 1, Name = "Africa" }, new Continent { Id = 2, Name = "Asia" }, new Continent { Id = 3, Name = "South America" } };
    public int SelectedContinentId { get; set; } = 1;

}

---

Duplicated
Last Updated: 03 Nov 2020 20:48 by Andrew

On initialization of the Grid the oDataString is correct, but when I apply a filter or apply a sort to a Grid column the ToODataString extension method generates an incorrect request URL. If I revert back to 2.16.0 everything works as expected. 

Unplanned
Last Updated: 03 Nov 2020 14:19 by ADMIN

This will let Excel mark the field as a Date and act according to the current culture on the machine that opens the file.

---

ADMIN EDIT:

This feature would let you define custom formats, so you may want to Vote for it and Follow it too: Custom Format for Excel Export per column. It is important to keep in mind that the Excel formats are completely different from the .NET formats.

If this is of high importance for you right now, you could create your own Excel file with the desired settings by following the example from this thread.

---

Completed
Last Updated: 30 Oct 2020 10:05 by ADMIN
Release 2.19.0
Created by: Jaco
Comments: 1
Category: Grid
Type: Bug Report
1

When I enter edit mode for a cell (I used InCell edit mode), the row height decreases.

 

*** Thread created by admin on customer behalf ***

Completed
Last Updated: 26 Oct 2020 13:34 by ADMIN
Release 2.19.0

Example Repo - https://github.com/benhysell/BlazorGridPagingIssue

tldr - OnRead args do not contain the correct page after restoring state without manual intervention.

 

Project Setup

  • Base Blazor Client/Server template with Weather Forecasts as the data
  • Server has a single OData endpoint to return 50 weather forecasts.  Each forecast starts with Temperature 0 and adds 1 per row to allow one to know which page they should be on
  • Client has two pages configured, 'Paging NOT Working' and 'Paging Work Around'

Steps to Reproduce

  • Navigate to 'Page NOT Working', select a page, i.e. page 5, navigate to the Counter page, navigate back to Page NOT Working.
  • Grid will show Page 5 in the page selector, however the data being show in from Page 1
  • Looking at Chrome 'Network' tab the OData query to obtain data from the backend does not contain proper offset for Page 5 data
  • args.Request.Page reports Page 1, however the state of the Grid was just restored to Page 5

Workaround

I currently have a work around, this can be seen in the other page 'Paging Work Around'.

  • On the first call to OnRead I check to see the last Grid state that was stored
  • If the arg.GridState.Page does not match, (Stored vs the Request) I update the Request with the proper Page
  • Proper OData query is generated to the backend.

Expected Behavior

  • After state is restored first call to OnRead() would report the proper Page and make correct OData call.
Completed
Last Updated: 23 Oct 2020 13:04 by ADMIN
Release 2.19.0
Created by: Jan Hindrik
Comments: 1
Category: Grid
Type: Bug Report
10

If I set grouping in OnStateInit, the GroupFooterTemplate does not have data for the aggregates I have set. If I group manually by dragging a column header, the data is there.

------

ADMIN EDIT: This stems from a framework behavior. The <GridAggregates> tag is a child component of the grid and as such, initializes after the grid. Since there is no event when all such child components are initialized the parent component cannot wait for them before starting to render and thus, it initializes before it can know what aggregates are defined.

Completed
Last Updated: 22 Oct 2020 05:49 by ADMIN
Release 2.19.0
1. Go to the last page

1. Click the Previous page button in the pager


<TelerikGrid Data="@MyData" Pageable="true" Navigable="true">
    <GridColumns>
        <GridColumn Field="ID"></GridColumn>
        <GridColumn Field="TheName" Title="Employee Name"></GridColumn>
    </GridColumns>
</TelerikGrid>

@code {
    public IEnumerable<object> MyData = Enumerable.Range(1, 50).Select(x => new { ID = x, TheName = "name " + x });
}
Completed
Last Updated: 20 Oct 2020 08:25 by ADMIN
Release 2.18.0
It use the OnCancel event to do some work and when it does not fire, I cannot invoke my logic.
Completed
Last Updated: 19 Oct 2020 21:05 by ADMIN
Release 2.18.0
Closing a Popup window with the "X" button and opening a new window (for example Edit and Add) renders wrong information in the newly opened window. If you close it with "Cancel" it works as expected.
Duplicated
Last Updated: 15 Oct 2020 11:55 by ADMIN
Created by: Paul
Comments: 1
Category: Grid
Type: Feature Request
13
I would like to give my users the opportunity to select the number of rows rendered in the Grid with a dropdown page size selector, located in the Grid footer.
Unplanned
Last Updated: 30 Sep 2020 12:19 by ADMIN

At the moment, the CollapsedGroups  collection in the grid state is the indexes of the root-level groups that you can collapse. I want to also be able to control the expanded state of nested groups.

ADMIN EDIT:

Ideas I can see are the following, do add your vote and comments on how you expect that to be exposed:

  • a form of Id/field in the group descriptor that controls this. Caveat - groups don't generally have such an id and the descriptor does not control the UI, it controls the data.
  • an event that provides the level, field name and group value that lets me choose this for every group as it renders. Caveat - might not plug in the state, but if you have a certain business logic for that you can just keep it in that event always, regardless of the grid state, or keep additional information in an application state.
  • the current indexes could become recursive (see the image attached below). Caveat: you can't be sure that the next time data loads the data and so the groups will be the same when loading state
Duplicated
Last Updated: 29 Sep 2020 07:42 by ADMIN
Created by: Emanuele
Comments: 1
Category: Grid
Type: Feature Request
0

it would be helpful to have the ability to set Class attribute for rendered TD.

this would allow for example to set a background color for a column

Unplanned
Last Updated: 26 Sep 2020 08:26 by ADMIN
Created by: Jan Hindrik
Comments: 0
Category: Grid
Type: Feature Request
1
I want to set such a class dynamically based on some of the aggregation values, and the current field and its value. Using the template does not suffice fully because it is inside the cell, so styling the entire cell is difficult, and styling the entire row is impossible.