You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor Server App中Radzen主从表多内联编辑问题求助

Radzen主从表内联编辑问题解决方案

问题1:新增主表行时OrderDateTime显示默认值1.01.0001,仅需显示日历图标

在RadzenGrid的OrderDateTime列配置中,通过模板判断值是否为DateTime.MinValue,仅展示日历选择按钮,非编辑状态下隐藏默认值文本:

<RadzenGridColumn TItem="Order" Property="OrderDateTime" Title="日期">
    <Template Context="order">
        @if (order.OrderDateTime != DateTime.MinValue)
        {
            @order.OrderDateTime.ToString("yyyy-MM-dd HH:mm")
        }
    </Template>
    <EditTemplate Context="order">
        <RadzenDatePicker @bind-Value="order.OrderDateTime" ShowButton="true" 
                          Placeholder="选择日期" Style="width:100%" />
    </EditTemplate>
</RadzenGridColumn>

同时在新增订单时,手动将OrderDateTime重置为null(若实体类允许该字段为空):

var newOrder = new Order { OrderDateTime = null, OrderDetails = new List<OrderDetail>() };

问题2:子网格点击编辑按钮后无取消按钮

两种解决方式,按需选择:

方式1:通过EditSettings全局配置

<RadzenGrid TItem="OrderDetail" Data="@currentOrder.OrderDetails" EditMode="EditMode.Inline">
    <EditSettings ShowCancelButton="true" ShowSaveButton="true" />
    <!-- 子网格列定义 -->
</RadzenGrid>

方式2:手动添加命令列控制

<RadzenGridColumn TItem="OrderDetail" Width="120px">
    <Template Context="detail">
        <RadzenButton Icon="edit" Click="@(() => childGrid.EditRow(detail))" />
    </Template>
    <EditTemplate Context="detail">
        <RadzenButton Icon="check" Click="@(() => childGrid.UpdateRow(detail))" />
        <RadzenButton Icon="close" Click="@(() => childGrid.CancelEditRow(detail))" />
    </EditTemplate>
</RadzenGridColumn>

(替换childGrid为你的子网格引用变量名)

问题3:点击「Add New Order」时子网格无法添加新行

新增主表订单时,必须初始化OrderDetails为非空集合,否则子网格无法绑定空集合进行新增操作:

// 「Add New Order」按钮点击事件处理
void AddNewOrder()
{
    var newOrder = new Order 
    { 
        OrderDateTime = null,
        // 关键:初始化空集合
        OrderDetails = new List<OrderDetail>() 
    };
    orders.Add(newOrder);
    // 若需直接进入编辑状态
    mainGrid.EditRow(newOrder);
}

同时确保子网格的Data绑定到当前选中订单的OrderDetails:

<RadzenGrid @ref="mainGrid" TItem="Order" Data="@orders" 
            SelectedItem="@selectedOrder" SelectionMode="SelectionMode.Single">
    <!-- 主网格列定义 -->
    <ChildContent>
        @if (selectedOrder != null)
        {
            <RadzenGrid @ref="childGrid" TItem="OrderDetail" Data="@selectedOrder.OrderDetails" 
                        EditMode="EditMode.Inline">
                <!-- 子网格列定义 -->
                <RadzenGridColumn Width="100px">
                    <Template>
                        <RadzenButton Icon="add" Click="@(() => childGrid.InsertRow(new OrderDetail()))" />
                    </Template>
                </RadzenGridColumn>
            </RadzenGrid>
        }
    </ChildContent>
</RadzenGrid>

内容的提问来源于stack exchange,提问作者raysefo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 08:39:46