【问题标题】:How to bind to a TextEdit in Blazorise DataGrid using EditTemplate如何使用 EditTemplate 绑定到 Blazorise DataGrid 中的 TextEdit
【发布时间】:2021-02-10 04:32:27
【问题描述】:

我是 Blazor 和 Blazorise 的新手......在研究这个组件时,我似乎找不到任何材料教如何在 Blazorise DataGrid 的 EditTemplate 内的 TextEdit 中绑定变量..

在我的 Blazorise DataGrid 中,我有一个 DataColumn(参见下面的代码):

<DataGridColumn
    Caption="Description"
    Editable="true"
    TItem="ProductVo"
    Field="@nameof(ProductVo.Description)">
        <DisplayTemplate>
            @($"{(context as ProductVo)?.Description}")
        </DisplayTemplate>
        <EditTemplate>
            <Validation UsePattern="true">              
                <TextEdit @bind-Text="context.CellValue" Text="@((string)context.CellValue)" Pattern="^.{3,200}$">
                    <Feedback>
                        <ValidationError>This field must be between 3 and 200 characters long.</ValidationError>
                    </Feedback>
                </TextEdit>
            </Validation>
        </EditTemplate>
</DataGridColumn>

在我的&lt;TextEdit&gt;中,我可以使用以下代码在编辑时显示该值:

Text="@((string)context.CellValue)"

但它不保存,因为我无法使用@bind-Text="context.CellValue"绑定context.CellValue

请帮助我学习如何使用 Blazorise DataGrid,在此先感谢!

【问题讨论】:

    标签: c# data-binding datagrid blazor blazorise


    【解决方案1】:

    您错过了TextChanged 事件,负责更新context 上的文本。 这应该有效:

    <TextEdit Text="@((string)context.CellValue)" TextChanged="@(v => ( (CellEditContext)context ).CellValue = v)" Pattern="^.{3,200}$">
    

    【讨论】:

    • 哇!谢谢 Leandro 先生,这绝对有效!!!我只是将ValueChanged 更改为TextChanged,因为这是组件所具有的,而且它工作得很好!!!非常感谢谢谢!!!
    • 太棒了!修正了答案以匹配正确的事件!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 2011-10-12
    相关资源
    最近更新 更多