1

テーブルの各行に関連付けられたデータソース (Items) とチェック ボックスを持つ MatBlazor テーブルがあります。@bind-Value を使用する場合、問題はなく、すべてが設計どおりに機能します。しかし、それを有効にするために、リスト内の項目が「チェック済み」であるかどうかに依存するボタンに検証を追加しています。

そのため、EventCallback である ValueChanged 属性を使用することにしましたが、選択した値で UI を更新することができませんでした。

StateHasChanged() や InvokeAsync() を呼び出してみましたが、UI が更新されません。

  <MatTable Items="@Projects" class="mat-elevation-z5 create-build-list" PageSize="50" ShowPaging="false" FilterByColumnName="ProjectName" Striped="true">
                        <MatTableHeader>
                            <th>Name</th>
                            <th>Key</th>
                            <th>Type</th>
                            <th>Include</th>
                        </MatTableHeader>
                        <MatTableRow>
                            <td>@context.ProjectName</td>
                            <td>@context.Key</td>
                            <td>@context.ProjectType</td>
                            <td><MatCheckbox Label="Add To Build" ValueChanged="@((bool val) => CheckBoxValue(val, context))" ValueExpression="@(() => context.IsChecked)"></MatCheckbox></td>
                        </MatTableRow>
                    </MatTable>

ここに方法があります

   void CheckBoxValue(bool e, MyProjectKey key)
{
    foreach(var p in Projects)
    {
        if(p.Key == key.Key)
        {
            p.IsChecked = true;
        }
    };
//-- I'll do more stuff here.
}

関数を呼び出しますが、UI を更新しないため、不足しているものはありますか。

4

1 に答える 1