Свой порядок колонок в таблице для каждого пользователя
веб приложение Blazor, как можно сохранить порядок колонок в таблице для пользователя?
К примеру Вадим зашел на свой аккаунт и переставил порядок колонок некой таблицы (по умолчанию 123, а у Вадима 312) и этот порядок условно это его настройки, и завтра когда он зайдет к себе на страницу ему надо показать таблицу 312 а не 123
...для данной веб страницы я использую Syncfusion и находясь на странице я могу показать настройки пользователя, если он изменил порядок колонок, а потом сбросил, то кнопка
'мои настройки' покажет ему как он сохранил порядок (при условии что он нажал на кнопку
'сохранить порядок'), но как только страница закрыта/открыта настройки по умолчанию сбрасываются.
я решила сохранить строку последовательности колонок в cookie, чтоб потом применить оттуда (пока не знаю как, но это не вопрос)
мне подумалось, что будет уместным вызвать cookie именно тогда, когда пользователь меняет порядок и там я вызываю событие
, которое set
cookie пользователя. Только вот у меня строка не сохраняется в куки пользователя, из-за большого размера. А может есть другой вариант, не через куки ?
страница razor
@page "/ordreColumn"
@using System.Drawing;
@using CalendarTestSync.Model;
@using Syncfusion.Blazor.Buttons
@using Syncfusion.Blazor.DropDowns
@using Syncfusion.Blazor.Grids
<SfGrid @ref="Grid" DataSource="@garajListsModel" Height="auto" AllowReordering="true" AllowFiltering="true" AllowPaging="true" AllowSorting="true" AllowResizing="true">
<GridEvents TValue="GridModelData" OnActionComplete="ActionCompletedHandler"></GridEvents>
<GridPageSettings PageSize="17"></GridPageSettings>
<GridFilterSettings Type="Syncfusion.Blazor.Grids.FilterType.CheckBox" IgnoreAccent="true" ShowFilterBarStatus="true" Mode="FilterBarMode.Immediate" ImmediateModeDelay="300" Operators=Operator.Contains>
</GridFilterSettings>
<GridColumns>
<GridColumn Uid="0" Field=@nameof(GridModelData.GarajNum) HeaderText="Column0" Width="90" Type=ColumnType.String ClipMode="ClipMode.EllipsisWithTooltip"></GridColumn>
<GridColumn Uid="1" Field=@nameof(GridModelData.HoursWork) HeaderText="Column1" Format="HH:mm" Width="70" AllowFiltering="false" ClipMode="ClipMode.EllipsisWithTooltip"></GridColumn>
<GridColumn Uid="2" Field=@nameof(GridModelData.TimeDif) HeaderText="Column2" Type=ColumnType.String Width="120" DisableHtmlEncode="false" AllowFiltering="false" ClipMode="ClipMode.EllipsisWithTooltip"></GridColumn>
</GridColumns>
</SfGrid>
<button class="btnLogout" @onclick="@(async() => await Grid.ResetPersistDataAsync())">сбросить все изменения примененные к этой таблице</button>
<button @onclick="saveColumnOrdreAsync">сохранить порядок колонок</button>
<button @onclick="setColumnOrdreAsync">мои настройки колонки</button>
@code {
#region property
public SfGrid<GridModelData> Grid;
//table display & table Temp
IEnumerable<GridModelData>? garajListsModelTemp;
IEnumerable<GridModelData>? garajListsModel;
#endregion
public async void saveColumnOrdreAsync()
{
VariableStatic.ColumnOrdreGet = await Grid.GetPersistDataAsync();
}
public async void setColumnOrdreAsync()
{
await Grid.SetPersistDataAsync(VariableStatic.ColumnOrdreGet);
}
public async void getColumnOrdreAsync()
{
await Grid.ResetPersistDataAsync();
}
public async void ActionCompletedHandler(Syncfusion.Blazor.Grids.ActionEventArgs<GridModelData> args)
{
if (args.RequestType == Syncfusion.Blazor.Grids.Action.Reorder)
{
//тут я пытаюсь вызвать куки, чтоб добавить поле, но по моему так не бывает?
//на стр1 я уже присвоила кое какие куки этому пользователю, и добавить еще одно поле не понимаю как
//а может надо новый куки под эти колонки, а как они будут знать чьи где, ведь у меня куки хранятся для каждого пользователя отдельно...
//и порядок вызова моих функций ===> save ===> set, а не слишком ли тяжело загружать эти функции каждый раз когда он дергает колонки, может есть вариант в конце вызвать, типа UnFocus из таблицы и раз сохранить .....пАмагите
}
}
}