【问题标题】:Modifications to the default behavior in Syncfusion Blazor Grid对 Syncfusion Blazor Grid 中默认行为的修改
【发布时间】:2021-04-27 05:11:56
【问题描述】:

我有一个适合我的网格,但我的客户的要求与默认行为完全不同。我现在迫不及待地要尽快执行此更改。

网格有一个复选框列,并且启用了多选。用户只能通过复选框选择一行。为简洁起见,我将设置复制到这里。

<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。有一个主键列,但它是隐藏的(可见为假)。关于其余列,它们是文本列。

客户已要求通过以下方式更改默认行为:

  • 当用户单击复选框时,该行必须同时选中和打开 用于编辑。
  • 更改值后,版本框必须保留 打开,即使用户按 Enter 或单击另一行。
  • 如果用户单击另一行,则此新行必须同时选择并打开 编辑。即使不可能将前一行与 盒子打开(我怀疑这在 Syncfusion 中是否可行 网格),必须保留之前的选择。所有选择不得 丢失,即使用户确认版本或移动到另一个版本 行。

Illustrative image of the requirements

我对 Syncfusion 控件很陌生,我不知道如何执行此要求。我想我必须为某些网格事件(可能是 RowSelected 或 OnRecordClick?)创建处理程序,但我也可能不得不中断默认的选择和编辑行为,我不知道该怎么做。因为我有压力,任何想法都会受到高度赞赏。

【问题讨论】:

  • 您是否尝试过与他们的支持人员交谈?也许你会在那里得到更好更快的答案

标签: c# datagrid blazor syncfusion


【解决方案1】:

您可以通过使用 Grid 的 RowSelectedOnActionComplete 事件来实现此要求。在 RowSelected 事件处理程序中调用 StartEdit 方法以启用单击编辑。在基于 RequestType 为 BeginEdit 的 OnActionComplete 事件处理程序中,您可以根据 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) && 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.Grids.SfGrid-1.html#Syncfusion_Blazor_Grids_SfGrid_1_StartEdit https://blazor.syncfusion.com/documentation/datagrid/editing/#event-trace-while-editing

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    相关资源
    最近更新 更多