我試圖根據行中基礎項目的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 關注
- 98 瀏覽
添加回答
舉報
0/150
提交
取消