Radzen Grid - CancelEditRow only works on page 1 of multipage grid. #55

Open
opened 2026-01-29 17:30:50 +00:00 by claunia · 0 comments
Owner

Originally created by @mikestolpa on GitHub (Mar 12, 2021).

On a multi-page grid, doing a CancelEditRow only works on page 1, on all other pages, the unselected row is still highlighted.

Code sample:

`
@page "/GridWorks"

@using RazdenTesting.Data
@using Radzen;
@using Radzen.Blazor;
@inject WeatherForecastService ForecastService

Radzen Test

@if (forecasts == null)

{

Loading...


}
else
{
<RadzenGrid
Count="@count"
AllowPaging="true"
PageSize="@PageSize"
Data="@sortedData"
LoadData="@LoadData"
TItem="WeatherForecast"
AllowSorting="true"
AllowFiltering="true"
RowSelect="@OnRowSelect"
EditMode="DataGridEditMode.Multiple"
@ref="weatherGrid">

    <Columns>
        <RadzenGridColumn
            TItem="WeatherForecast"
            Property="Date"
            Title="Date" >
            <Template Context="data">
                @String.Format("{0:d}", data.Date)
            </Template>                    
        </RadzenGridColumn>
        <RadzenGridColumn
            TItem="WeatherForecast"
            Property="TemperatureC"
            Title="Temp. (C)" >
        </RadzenGridColumn>
        <RadzenGridColumn
            TItem="WeatherForecast"
            Property="TemperatureF"
            Title="Temp. (F)" >
        </RadzenGridColumn>
        <RadzenGridColumn
            TItem="WeatherForecast"
            Property="Summary"
            Title="Summary" >
        </RadzenGridColumn>
    </Columns>
</RadzenGrid>   

}

@code {
private WeatherForecast[] forecasts;
private WeatherForecast[] sortedData;
private int count = 0;
private int PageSize = 10;
private WeatherForecast CurrentSelectedRow;
RadzenGrid weatherGrid;

protected override async Task OnInitializedAsync()
{
    forecasts = await ForecastService.GetForecastAsync(DateTime.Now);

    var args = new LoadDataArgs
    {
        Skip = 0,
        Top = PageSize
    };


   await LoadData(args);
}

async Task LoadData(LoadDataArgs args)
{

    count = forecasts.Count();
    sortedData = forecasts.Skip(args.Skip.Value).Take(PageSize).ToArray();
    await InvokeAsync(StateHasChanged);
    
}
async Task OnRowSelect(WeatherForecast row)
{
    if (CurrentSelectedRow == null)
    {
        CurrentSelectedRow = row;
        await weatherGrid.EditRow(row);
        return;
    }

    // skip all of this if the same row is being selected.
    if (row == CurrentSelectedRow)
    {
        // make sure it's in edit mode
        if (!weatherGrid.IsRowInEditMode(CurrentSelectedRow))
        {
            await weatherGrid.EditRow(row);
        }
        return;
    }

    weatherGrid.CancelEditRow(CurrentSelectedRow);
    CurrentSelectedRow = row;
   // await weatherGrid.EditRow(row);
    await InvokeAsync(StateHasChanged);
}

}
`

Originally created by @mikestolpa on GitHub (Mar 12, 2021). On a multi-page grid, doing a CancelEditRow only works on page 1, on all other pages, the unselected row is still highlighted. **Code sample:** ` @page "/GridWorks" @using RazdenTesting.Data @using Radzen; @using Radzen.Blazor; @inject WeatherForecastService ForecastService <h3>Radzen Test</h3> @if (forecasts == null) { <p><em>Loading...</em></p> } else { <RadzenGrid Count="@count" AllowPaging="true" PageSize="@PageSize" Data="@sortedData" LoadData="@LoadData" TItem="WeatherForecast" AllowSorting="true" AllowFiltering="true" RowSelect="@OnRowSelect" EditMode="DataGridEditMode.Multiple" @ref="weatherGrid"> <Columns> <RadzenGridColumn TItem="WeatherForecast" Property="Date" Title="Date" > <Template Context="data"> @String.Format("{0:d}", data.Date) </Template> </RadzenGridColumn> <RadzenGridColumn TItem="WeatherForecast" Property="TemperatureC" Title="Temp. (C)" > </RadzenGridColumn> <RadzenGridColumn TItem="WeatherForecast" Property="TemperatureF" Title="Temp. (F)" > </RadzenGridColumn> <RadzenGridColumn TItem="WeatherForecast" Property="Summary" Title="Summary" > </RadzenGridColumn> </Columns> </RadzenGrid> } @code { private WeatherForecast[] forecasts; private WeatherForecast[] sortedData; private int count = 0; private int PageSize = 10; private WeatherForecast CurrentSelectedRow; RadzenGrid<WeatherForecast> weatherGrid; protected override async Task OnInitializedAsync() { forecasts = await ForecastService.GetForecastAsync(DateTime.Now); var args = new LoadDataArgs { Skip = 0, Top = PageSize }; await LoadData(args); } async Task LoadData(LoadDataArgs args) { count = forecasts.Count(); sortedData = forecasts.Skip(args.Skip.Value).Take(PageSize).ToArray(); await InvokeAsync(StateHasChanged); } async Task OnRowSelect(WeatherForecast row) { if (CurrentSelectedRow == null) { CurrentSelectedRow = row; await weatherGrid.EditRow(row); return; } // skip all of this if the same row is being selected. if (row == CurrentSelectedRow) { // make sure it's in edit mode if (!weatherGrid.IsRowInEditMode(CurrentSelectedRow)) { await weatherGrid.EditRow(row); } return; } weatherGrid.CancelEditRow(CurrentSelectedRow); CurrentSelectedRow = row; // await weatherGrid.EditRow(row); await InvokeAsync(StateHasChanged); } } `
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/radzen-blazor#55