2

我有一个可以完美搭配的网格

@Html.Grid(Model.SearchResults).Columns(column =>
{
//grid code here
}).Attributes(@class => "grid", width => "100%")

这被标记为:

.gridrow
{
 border-top: 1px solid #DDDDDD;
}

.gridrow_alternate
{
 background-color: #F2F2EA;
 border-top: 1px solid #DDDDDD;
}

这一切都很好,并将替代颜色放在网格上。

但是,如果返回的数据无效,我想用灰色行覆盖某些网格行。

所以我尝试了 .RowAttributes

.RowAttributes(data => new Hash(@class => data.Item.Inactive ? "inactive" : ""))

随着CSS添加:

.inactive 
{ 
border-top: 1px solid #DDDDDD;
background-color: lightgrey;
}

然而,这会将所有网格行覆盖为“”或“非活动”,因为它需要在 for if else 中包含表达式(或者是否有其他方式来编写它)所以它只有语句的 if 部分?我试图把 if 语句放在那里,但它抱怨我缺少一个 return 语句,所以不能这样做。

我想保持 gridrow 和 gridrow_Alternative 不变,并简单地动态覆盖其中一个......

所以它会从

gridrow gridrow_Alternative gridrow gridrow_Alternative gridrow

成为:

gridrow gridrow_Alternative inactive gridrow_Alternative gridrow

所以它保持交替的色带,然后如果一个是不活动的,它会在 TR 中将那个单独更改为不活动,如下所示:

<tr class="gridrow">
<tr class="gridrow_Alternative">
<tr class="inactive">
<tr class="gridrow_Alternative">
<tr class="gridrow">

有没有人这样做或者他们可以提供帮助,因为我在网上找不到这样的东西,我认为这很奇怪。

4

2 回答 2

1

如果您有权访问 SQL 查询 - 您可以在数据中添加行号(对于 MSSQL,请参见http://msdn.microsoft.com/en-GB/library/ms186734.aspx

然后检查行号/2 的 mod - 如果为 0,则 class = "gridrow" - 如果不是,则 class = "gridrow_alternate" 例如:

    .RowAttributes(data => new Hash(@class => data.Item.Inactive ? "inactive" : : ((data.Item.Row % 2) == 0 ? "gridrow" : "gridrow_alternate"))))

为我工作

于 2014-10-08T16:07:24.950 回答
1

我在寻找类似的解决方案时遇到了这个问题。来自 mon12345 的答案似乎有点复杂。如果使用data.IsAlternate属性,有一种更简洁的方法可以获得所需的结果

.RowAttributes(
    data => new Hash(@class => data.Item.Inactive ? "inactive" : 
           ((data.IsAlternate ? "gridrow" : "gridrow_alternate")))
)
于 2015-08-19T11:09:30.823 回答