在 Blazor 中禁用特定日期
Disable specific dates in Blazor
我的编辑表单中有一些字段。所以这里基于我的运输下拉值选择,运输日期(日期时间)应该禁用其日历中的日期。
就这样吧。
<div class="form-group col">
<label>Main Transport</label>
@if (lstTransports != null)
{
<InputSelect id="txtMainTransport" class="form-control" @bind-Value="@trade.transport" @onchange="OnMainTransportValueChange">
<option selected value="-1">-Select-</option>
@foreach (var transport in lstTransports)
{
<option value="@transport.id">@transport.id</option>
}
</InputSelect>
<ValidationMessage For="@(() => trade.transport)" />
}
</div>
<div class="form-group col">
<label>Estimated Shipping Date</label>
<InputDate id="shippingDate" @bind-Value="@trade.shippingDate" @bind-Value:format="dd/mm/yyyy" class="form-control" />
<ValidationMessage For="@(() => trade.shippingDate)" />
</div>
这里是 onchange 函数:
private async void OnMainTransportValueChange(ChangeEventArgs e)
{
trade.transport= e.Value.ToString();
if(trade.transport == "Sea")
{
//here it should have my date disable code
}
}
现在在基于运输价值的 onchange 中,我想在装运日期之前禁用日历日期。
因此,如果 Transport == Sea
则发货日期日历中的日期 less than Datetime.Today.AddDays(5)
应该被禁用。
我如何在 C# 中处理它?我试图通过发货日期 id 进行修改,但它似乎没有检测到 id 值。请帮忙。
这对我有用
<InputDate @bind-Value="@myClass.shippingDate" @attributes="@shippingDateAttributes" />
...
@code {
Dictionary<string, object>? shippingDateAttributes = new();
private async void OnMainTransportValueChange(ChangeEventArgs e)
{
trade.transport= e.Value.ToString();
if(trade.transport == "Sea")
{
//here it should have my date disable code
string maxDate = (DateTime.Now + TimeSpan.FromDays(5)).ToString("yyyy-MM-dd");
shippingDateAttributes.Add("max", maxDate);
StateHasChanged();
}
}
}
您还需要一些逻辑来确保您不会添加该属性两次。所以理想情况下,您应该先删除 'max' 属性,然后再添加它。
这是我为此使用的参考 post:
Disable Dates for DateTime picker
我的编辑表单中有一些字段。所以这里基于我的运输下拉值选择,运输日期(日期时间)应该禁用其日历中的日期。 就这样吧。
<div class="form-group col">
<label>Main Transport</label>
@if (lstTransports != null)
{
<InputSelect id="txtMainTransport" class="form-control" @bind-Value="@trade.transport" @onchange="OnMainTransportValueChange">
<option selected value="-1">-Select-</option>
@foreach (var transport in lstTransports)
{
<option value="@transport.id">@transport.id</option>
}
</InputSelect>
<ValidationMessage For="@(() => trade.transport)" />
}
</div>
<div class="form-group col">
<label>Estimated Shipping Date</label>
<InputDate id="shippingDate" @bind-Value="@trade.shippingDate" @bind-Value:format="dd/mm/yyyy" class="form-control" />
<ValidationMessage For="@(() => trade.shippingDate)" />
</div>
这里是 onchange 函数:
private async void OnMainTransportValueChange(ChangeEventArgs e)
{
trade.transport= e.Value.ToString();
if(trade.transport == "Sea")
{
//here it should have my date disable code
}
}
现在在基于运输价值的 onchange 中,我想在装运日期之前禁用日历日期。
因此,如果 Transport == Sea
则发货日期日历中的日期 less than Datetime.Today.AddDays(5)
应该被禁用。
我如何在 C# 中处理它?我试图通过发货日期 id 进行修改,但它似乎没有检测到 id 值。请帮忙。
这对我有用
<InputDate @bind-Value="@myClass.shippingDate" @attributes="@shippingDateAttributes" />
...
@code {
Dictionary<string, object>? shippingDateAttributes = new();
private async void OnMainTransportValueChange(ChangeEventArgs e)
{
trade.transport= e.Value.ToString();
if(trade.transport == "Sea")
{
//here it should have my date disable code
string maxDate = (DateTime.Now + TimeSpan.FromDays(5)).ToString("yyyy-MM-dd");
shippingDateAttributes.Add("max", maxDate);
StateHasChanged();
}
}
}
您还需要一些逻辑来确保您不会添加该属性两次。所以理想情况下,您应该先删除 'max' 属性,然后再添加它。
这是我为此使用的参考 post: Disable Dates for DateTime picker