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

如何在MudTable非行内编辑状态下隐藏提交按钮列?

解决MudTable只读状态下隐藏空白提交按钮列的问题

我正在试用MudTable组件,希望在未启用行内编辑(即ReadOnly设为true)时隐藏提交按钮对应的空白列。当前使用默认示例时,最后一列始终空白且会无限延伸,外观较为难看。

问题代码示例

<MudTable Items="@Elements" Dense="@dense" Hover="@hover" ReadOnly="@ronly" CanCancelEdit="@canCancelEdit" Filter="new Func<Element,bool>(FilterFunc)"
          @bind-SelectedItem="selectedItem1" SortLabel="Sort By" CommitEditTooltip="Commit Edit"
          OnCommitEditClick="@(() => Snackbar.Add("Commit Edit Handler Invoked"))" RowEditPreview="BackupItem" RowEditCancel="ResetItemToOriginalValues"
          RowEditCommit="ItemHasBeenCommitted" Bordered="@bordered" IsEditRowSwitchingBlocked="@blockSwitch" ApplyButtonPosition="@applyButtonPosition">
    <ToolBarContent>
        <MudText Typo="Typo.h6">Periodic Elements</MudText>
        <MudSpacer />
        <MudTextField @bind-Value="searchString" Placeholder="Search" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Search" IconSize="Size.Medium" Class="mt-0"></MudTextField>
    </ToolBarContent>
    <ColGroup>
    
        <col style="width:50px;" />
        <col style="width:80px;" />
        <col style="width:50%;" />
        <col />
        <col />
        @if (applyButtonPosition.DisplayApplyButtonAtEnd())
        {
            <col style="width:2px;" />
        }
    </ColGroup>
    <HeaderContent>
        <MudTh><MudTableSortLabel SortBy="new Func<Element, object>(x=>x.Number)">Nr</MudTableSortLabel></MudTh>
        <MudTh><MudTableSortLabel SortBy="new Func<Element, object>(x=>x.Sign)">Sign</MudTableSortLabel></MudTh>
        <MudTh><MudTableSortLabel InitialDirection="SortDirection.Ascending" SortBy="new Func<Element, object>(x=>x.Name)">Name</MudTableSortLabel></MudTh>
        <MudTh><MudTableSortLabel SortBy="new Func<Element, object>(x=>x.Position)">Position</MudTableSortLabel></MudTh>
        <MudTh><MudTableSortLabel SortBy="new Func<Element, object>(x=>x.Molar)">Mass</MudTableSortLabel></MudTh>
    </HeaderContent>
    <RowTemplate>
        <MudTd DataLabel="Nr">@context.Number</MudTd>
        <MudTd DataLabel="Sign">@context.Sign</MudTd>
        <MudTd DataLabel="Name">@context.Name</MudTd>
        <MudTd DataLabel="Position">@context.Position</MudTd>
        <MudTd DataLabel="Molar mass">@context.Molar</MudTd>
    </RowTemplate>
    <RowEditingTemplate>
        <MudTd DataLabel="Nr">@context.Number</MudTd>
        <MudTd DataLabel="Sign">
            <MudTextField @bind-Value="@context.Sign" Required />
        </MudTd>
        <MudTd DataLabel="Name">
            <MudTextField @bind-Value="@context.Name" Required />
        </MudTd>
        <MudTd DataLabel="Position">
            <MudNumericField @bind-Value="@context.Position" Required Min="1" />
        </MudTd>
        <MudTd DataLabel="Molar mass">
            <MudTextField @bind-Value="@context.Molar" Required />
        </MudTd>
    </RowEditingTemplate>
    <PagerContent>
        <MudTablePager />
    </PagerContent>
</MudTable> 

问题截图

未启用行内编辑时最后一列留空,用于显示提交按钮

解决方案

方法1:动态控制列的渲染(推荐)

修改ColGroup中的判断逻辑,结合ReadOnly状态(即ronly变量),只有当非只读且按钮位置在末尾时才渲染提交按钮列:

<ColGroup>
    <col style="width:50px;" />
    <col style="width:80px;" />
    <col style="width:50%;" />
    <col />
    <col />
    @if (!ronly && applyButtonPosition.DisplayApplyButtonAtEnd())
    {
        <col style="width:120px;" /> <!-- 调整为合适宽度,给提交/取消按钮留出空间 -->
    }
</ColGroup>

这样当表格处于只读状态时,不会渲染额外的空白列,表格布局会自动适配。

方法2:通过CSS隐藏空白列

如果不想修改组件结构,可以添加自定义CSS,当表格处于只读状态时隐藏最后一列:

/* 隐藏只读状态下的最后一列单元格和表头 */
.mud-table[readonly] .mud-table-body .mud-table-cell:last-child,
.mud-table[readonly] .mud-table-head .mud-table-cell:last-child {
    display: none;
}

添加这段CSS后,只读状态下的空白列会被隐藏,编辑状态下按钮列正常显示。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:31:17