首页 > 解决方案 > 以我的动态形式在 Blazor 中自定义 InputDate

问题描述

我有一个动态表单(为了演示我的问题),它以表格格式显示从数据表提供给它的所有数据。

我有一个日期字段,不能使用日期类型的 html5 输入,因为它在 Safari 中不起作用。

我不确定这是否是正确的方法我使用 InputDate 创建了一个自定义 Date 组件,假设我可以将 row[columnname] 绑定到组件的参数变量并绑定它。

但我无法将值从父组件绑定到组件,因为它不是变量、属性或索引器。

如何使用 InputDate 接受来自 Datarow 的值,例如 ex: (datarow[ColumnName].tostring()) 检查代码片段,了解我试图绑定到 InputDate 的值是什么类型的 (ieDatarow)。

父示例:

 @for(int i=0;i< Table.Rows.Count; i++)
        {
            
            <tr>
                @if(!column.IsDateType)
                {
                    <td>@ListData.DataView.Table.Rows[i][col.Name]</td>
                }
    else{
   <Date  @bind-DateValue="Convert.ToDateTime(drow[col.Name].ToString())" />

//below not added since does not work
//@onchange="@((ChangeEventArgs _e) => { drow[col.Name] = Convert.ToDateTime(_e.Value.ToString()); })"
}

            </tr>
        }

日期组件:

<h3>Date</h3>
<InputDate @bind-Value="DateValue"/>
@code {

    private DateTime dateVal;

    [Parameter]
    public DateTime DateValue {
        get => dateVal;
        set
        {
            if(dateVal != value)
            {
                dateVal = value;
                if (DateValueChanged.HasDelegate)
                {
                    DateValueChanged.InvokeAsync(value);
                }
            }
        }
    }

    [Parameter]
    public EventCallback<DateTime> DateValueChanged { get; set; }

}

标签: c#blazor

解决方案


推荐阅读