我试图根据行中基础项目的GridView状态(值)对行进行着色,但我在文档中找到的解决方案似乎都不适合我。Enum我有DataSource这样的GridViewpublic GridViewDataSet<DTO> Items { get; set; }DTOBootstrapColor对象来自微服务,因此在我看来,将 type 属性添加到基于“深层后端”微服务的 DTO 对象中似乎不合理。这种方法的灵感来自于此处的示例 2: https: //www.dotvvm.com/docs/controls/bootstrap/GridView/2.0也许,可以<dot:Decorator>像示例 5 中那样使用: 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 的行着色吗?
1 回答
慕码人8056858
TA贡献1803条经验 获得超6个赞
枚举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>
这将根据和属性的值在行上添加active
和CSS 类(它们必须是)。paid
IsActive
IsPaid
bool
- 1 回答
- 0 关注
- 67 浏览
添加回答
举报
0/150
提交
取消