BlazorDateRangePicker开启SingleDatePicker后按钮不可见问题求助
解决BlazorDateRangePicker单日期模式下自定义按钮模板不显示的问题
启用SingleDatePicker="true"后自定义ButtonsTemplate不显示的核心原因是:组件在单日期模式下默认隐藏了按钮区域,且自动选择日期后关闭选择器,导致自定义模板无法渲染。另外你按钮的禁用逻辑包含TEndDate判断,单日期模式下该值始终为null,会导致Apply按钮一直处于禁用状态。
修复步骤:
- 给
DateRangePicker添加ShowButtons="true"参数,强制组件渲染按钮栏 - 移除禁用条件中的
TEndDate判断,单日期模式下仅校验TStartDate即可
修改后的完整代码:
组件部分
<DateRangePicker SingleDatePicker="true" @bind-StartDate="StartDate" @bind-EndDate="EndDate" Context="contekst" ApplyButtonClasses="single-picker-buttons" ShowButtons="true"> <ButtonsTemplate> <button class="cancelBtn btn btn-sm btn-default" @onclick="@contekst.ClickCancel" type="button"> Cancel </button> <button class="cancelBtn btn btn-sm btn-default" @onclick="@(e => ResetClick(e, contekst))" type="button"> Reset </button> <button class="applyBtn btn btn-sm btn-primary" @onclick="@contekst.ClickApply" disabled="@(contekst.TStartDate == null)" type="button"> Apply </button> </ButtonsTemplate> </DateRangePicker>
代码逻辑部分
@code { DateTimeOffset? StartDate { get; set; } DateTimeOffset? EndDate { get; set; } void ResetClick(MouseEventArgs e, DateRangePicker picker) { StartDate = null; EndDate = null; picker.Close(); picker.OnRangeSelect.InvokeAsync(new DateRange()); } }
补充说明:
ShowButtons="true"是解决模板不显示的关键,单日期模式下组件默认不会渲染按钮栏,必须显式开启- 单日期模式下组件不会设置
TEndDate,原禁用条件会导致Apply按钮始终无法点击,调整后仅校验TStartDate即可正常使用
内容的提问来源于stack exchange,提问作者Ovis
相关产品推荐
相关产品推荐

