Изменения поведения по умолчанию в сетке Syncfusion Blazor

#c# #datagrid #blazor #syncfusion

#c# #datagrid #blazor #syncfusion

Вопрос:

У меня есть сетка, которая работает для меня, но у моего клиента есть требования, сильно отличающиеся от поведения по умолчанию. Теперь я очень настаиваю на том, чтобы выполнить эти изменения как можно скорее.

В сетке есть столбец с флажками, и включен множественный выбор. Пользователь может выбрать строку только с помощью флажков. Для краткости я скопирую здесь настройки.

 <SfGrid @ref="Grid" DataSource="Coberturas" Width="100%"  EnablePersistence="true">
    <GridSelectionSettings Type="SelectionType.Multiple" CheckboxMode="CheckboxSelectionType.Default" CheckboxOnly="true"></GridSelectionSettings>
    <GridEditSettings AllowAdding="false" AllowDeleting="false" AllowEditing="true" AllowEditOnDblClick="false" AllowNextRowEdit="false"></GridEditSettings>
 

У него нет панели инструментов. Вы не можете добавлять строки или удалять их. EnablePersistence требуется по причинам, не связанным с этим вопросом. Существует столбец первичного ключа, но он скрыт (видимое значение равно false). Что касается остальных столбцов, они являются текстовыми столбцами.

Клиент попросил изменить поведение по умолчанию следующим образом:

  • Когда пользователь нажимает флажок, строка должна быть выбрана и открыта для редактирования.
  • После изменения значений поля редакции должны оставаться открытыми, даже если пользователь нажимает Enter или щелкает другую строку.
  • Если пользователь нажимает на другую строку, эта новая строка должна быть как выделена, так и открыта для редактирования. Даже если невозможно сохранить предыдущую строку с открытыми полями (я сомневаюсь, возможно ли это в сетке Syncfusion), предыдущий выбор должен быть сохранен. Все выборки не должны быть потеряны, даже если пользователь подтверждает редакцию или переходит в другую строку.

Иллюстративное изображение требований

Я довольно новичок в элементах управления Syncfusion и понятия не имею, как выполнить это требование. Я полагаю, я должен создать обработчики для некоторых событий сетки (возможно, RowSelected или OnRecordClick?) но мне также может потребоваться прервать выбор и редактирование по умолчанию, и я не знаю, как это сделать. Поскольку у меня есть давление, любая идея будет высоко оценена.

Комментарии:

1. Вы пробовали обратиться в их службу поддержки? Может быть, вы получите лучший и быстрый ответ там

Ответ №1:

Вы можете выполнить это требование, используя события Grid RowSelected и OnActionComplete. Вызовите метод StartEdit в обработчике событий RowSelected, чтобы включить редактирование одним щелчком мыши. И в обработчике событий OnActionComplete на основе RequestType как BeginEdit вы можете выбрать требуемые строки на основе сохраненных индексов выбранных строк из обработчика событий RowSelected.

Пример: https://www.syncfusion.com/downloads/support/directtrac/general/ze/ServerApp-614805550

Пожалуйста, обратитесь к приведенным ниже кодам,

 <GridEvents RowSelected="RowSelected" OnActionComplete="OnActionComplete" TValue="Order"></GridEvents>

public List<double> SelectIndexes = new List<double>();
SfGrid<Order> Grid;
public bool flag { get; set; } = true;
public async Task RowSelected(RowSelectEventArgs<Order> args)
{
    if (flag)
    {
        await Grid.StartEdit();
        SelectIndexes.Add(args.RowIndex);
    }
    flag = true;
}

public async Task OnActionComplete(ActionEventArgs<Order> args)
{
    if (args.RequestType.Equals(Action.BeginEdit) amp;amp; SelectIndexes.Count != 0)
    {
        flag = false;
        await Grid.SelectRows(SelectIndexes);
    }
}
 

Ссылки :
https://blazor.syncfusion.com/documentation/datagrid/events/#onactioncomplete
https://help.syncfusion.com/cr/blazor/Syncfusion .Blazor.Сетки.SfGrid-1.html#Syncfusion_Blazor_Grids_SfGrid_1_StartEdit
https://blazor.syncfusion.com/documentation/datagrid/editing/#event-trace-while-editing