【问题标题】:Disable specific dates in Blazor在 Blazor 中禁用特定日期
【发布时间】:2021-08-05 17:13:32
【问题描述】:

我的编辑表单中有一些字段。所以在这里根据我的运输下拉值选择,运输日期(日期时间)应该禁用其日历中的日期。 就这样吧。

 <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 值。请帮忙。

【问题讨论】:

    标签: c# date datetime blazor blazor-webassembly


    【解决方案1】:

    这对我有用

        <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”属性,然后再添加它。

    这是我在这篇文章中使用的参考: Disable Dates for DateTime picker

    【讨论】:

    • 回答得很好。非常感谢
    猜你喜欢
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 2014-05-15
    • 2023-04-04
    • 2013-12-05
    • 1970-01-01
    相关资源
    最近更新 更多