Blazor QuickGrid: как создать столбец без заполнения RenderFragment?C#

Место общения программистов C#
Anonymous
Blazor QuickGrid: как создать столбец без заполнения RenderFragment?

Сообщение Anonymous »

Я все еще изучаю возможности QuickGrid от Blazor.
И здесь я столкнулся с одной досадной проблемой. Я хочу добавить еще один столбец, который будет использоваться для отображения флажков в заголовке и теле. Я хочу, чтобы этот столбец отображался, предоставляя только параметр типа, например:

Код: Выделить всё

 // my custom column
c.Id)" Format="C" />


@context.Price


Из документации мы знаем, что мы можем определять столбцы, добавляя компоненты, производные от базового класса ColumnBase. Итак, я создал свой собственный класс следующим образом:

Код: Выделить всё

public class CheckboxColumn : ColumnBase
{
// abstract method implementation
}
Проблема в том, что в конечном итоге сетка не отображает мой столбец (это означает, что в браузере я вижу все столбцы, кроме первого). Почему?
Примечания:
  • Я пытался отладить и изучить, что там происходит. При первом рендеринге сетки я вижу, что все 4 столбца были собраны этим вызовом Grid.AddColumn(this) в ColumnBase.razor. Но затем, из-за вызова обратного вызова, сетка повторно визуализируется, очищает коллекцию столбцов и снова отображает @ChildContent, что означает, что Grid.AddColumn(this) вызывается снова. Но на этот раз первым this является второй столбец.
Итак, вкратце: при первоначальном рендеринге мы получаем все 4 столбца -> в определенное время происходит повторный рендеринг -> коллекция столбцов очищается -> мы получаем только 3 столбца (все, кроме первого)
Надеюсь, вы поняли логику.
  • Поскольку CheckboxColumn является производным от ColumnBase, мы можем использовать, например, HeaderTemplate, который является RenderFragment. Если мы предоставим что-то в HeaderTemplate для CheckboxColumn — все будет отображаться нормально. Но я не хочу предоставлять там какие-либо RenderFragment.
UPD-1
Если для CheckboxColumn указан параметр Align — все в порядке! Но для меня это все равно не отвечает на вопрос...
UPD-2 Если я не ошибаюсь, это утверждение(

Код: Выделить всё

All of the parameters are from a set of known types† or any primitive type that hasn't changed since the previous set of parameters were set.
) отвечает, почему мой CheckboxColumn не отображается повторно. Итак, как я могу принудительно выполнить повторный рендеринг?

Вернуться в «C#»