DotVVM - 在 GridView 中为行着色的可能性有哪些?
DotVVM - What are the possibilities for coloring rows in GridView?
我正在尝试根据行中基础项目的状态(Enum
值)为 GridView
中的行着色,但是 none 我的解决方案在文档中找到的似乎适合我。
我有 DataSource
这样的 GridView
public GridViewDataSet<DTO> Items { get; set; }
DTO
对象来自微服务,所以在我看来将 BootstrapColor
类型的 属性 添加到基于 "deep backend" 微服务。此方法的灵感来自此处的示例 2:
https://www.dotvvm.com/docs/controls/bootstrap/GridView/2.0
也许,可以像示例 5 中那样使用 <dot:Decorator>
:
https://www.dotvvm.com/docs/controls/builtin/GridView/latest
但我还没有找到任何使用 <dot:Decorator>
或 <bs:ColorDecorator>
根据文档中的某些条件为行着色的适当示例。我只能用相同的颜色给所有行上色。
我尝试在标记中应用一些条件,例如。
<RowDecorators>
<bs:ColorDecorator Color="{value: EnumState == StateValue ? Color1 : Color2 }"></bs:ColorDecorator>
</RowDecorators>
但是没用
除上述方法外,还有其他方法可以为 GridView 的行着色吗?
BootstrapColor
枚举应该被视为表示层的东西。你是对的,在内部微服务或应用程序的较低层中使用它是不明智的。
来自下层的 DTO 应该包含有关正在发生的事情的信息,而不关心它将如何显示给用户。我希望枚举具有 Paid
、Unpaid
、Canceled
等值,或者一组 bool
标志 - IsPaid
、IsCanceled
等等。
在表现层,你有两种选择:
将 DTO 投影到另一个包含 BootstrapColor
枚举值的 DTO(手动或使用 AutoMapper)。
在 DotVVM 数据绑定中使用表达式在标记中进行转换。
对于简单的情况,我会选择第二个选项。
<bs:ColorDecorator>
的正确语法是这样的:
<RowDecorators>
<bs:ColorDecorator Color="{value: State == OrderState.Confirmed ? BootstrapColor.Success : BootstrapColor.Danger }" />
</RowDecorators>
您需要添加适当的 @import
指令,以便正确解析枚举。
如果有两个以上的选项,或者一些状态可以并存,可以考虑使用CSS 类:
<RowDecorators>
<dot:Decorator class-active="{value: IsActive}" class-paid="{value: IsPaid}" />
</RowDecorators>
这将根据 IsActive
和 IsPaid
属性的值在行上添加 active
和 paid
CSS 类 (它们必须是 bool
)。
我正在尝试根据行中基础项目的状态(Enum
值)为 GridView
中的行着色,但是 none 我的解决方案在文档中找到的似乎适合我。
我有 DataSource
这样的 GridView
public GridViewDataSet<DTO> Items { get; set; }
DTO
对象来自微服务,所以在我看来将 BootstrapColor
类型的 属性 添加到基于 "deep backend" 微服务。此方法的灵感来自此处的示例 2:
https://www.dotvvm.com/docs/controls/bootstrap/GridView/2.0
也许,可以像示例 5 中那样使用 <dot:Decorator>
:
https://www.dotvvm.com/docs/controls/builtin/GridView/latest
但我还没有找到任何使用 <dot:Decorator>
或 <bs:ColorDecorator>
根据文档中的某些条件为行着色的适当示例。我只能用相同的颜色给所有行上色。
我尝试在标记中应用一些条件,例如。
<RowDecorators>
<bs:ColorDecorator Color="{value: EnumState == StateValue ? Color1 : Color2 }"></bs:ColorDecorator>
</RowDecorators>
但是没用
除上述方法外,还有其他方法可以为 GridView 的行着色吗?
BootstrapColor
枚举应该被视为表示层的东西。你是对的,在内部微服务或应用程序的较低层中使用它是不明智的。
来自下层的 DTO 应该包含有关正在发生的事情的信息,而不关心它将如何显示给用户。我希望枚举具有 Paid
、Unpaid
、Canceled
等值,或者一组 bool
标志 - IsPaid
、IsCanceled
等等。
在表现层,你有两种选择:
将 DTO 投影到另一个包含
BootstrapColor
枚举值的 DTO(手动或使用 AutoMapper)。在 DotVVM 数据绑定中使用表达式在标记中进行转换。
对于简单的情况,我会选择第二个选项。
<bs:ColorDecorator>
的正确语法是这样的:
<RowDecorators>
<bs:ColorDecorator Color="{value: State == OrderState.Confirmed ? BootstrapColor.Success : BootstrapColor.Danger }" />
</RowDecorators>
您需要添加适当的 @import
指令,以便正确解析枚举。
如果有两个以上的选项,或者一些状态可以并存,可以考虑使用CSS 类:
<RowDecorators>
<dot:Decorator class-active="{value: IsActive}" class-paid="{value: IsPaid}" />
</RowDecorators>
这将根据 IsActive
和 IsPaid
属性的值在行上添加 active
和 paid
CSS 类 (它们必须是 bool
)。