亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

DotVVM - 在 GridView 中對行進行著色有哪些可能性?

DotVVM - 在 GridView 中對行進行著色有哪些可能性?

C#
撒科打諢 2023-09-09 17:22:48
我試圖根據行中基礎項目的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。CanceledboolIsPaidIsCanceled

在表示層,您有兩個選擇:

  1. 將 DTO 投影到另一個包含BootstrapColor枚舉值的 DTO(手動或使用 AutoMapper 等)。

  2. 使用 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 類(它們必須是)。paidIsActiveIsPaidbool


查看完整回答
反對 回復 2023-09-09
  • 1 回答
  • 0 關注
  • 98 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號