MVCContrib RowAttributes覆盖属性网格,如何同时拥有两者?

时间:2013-11-01 12:29:27

标签: css asp.net-mvc mvccontrib

我有一个与

完美配合的网格
@Html.Grid(Model.SearchResults).Columns(column =>
{
//grid code here
}).Attributes(@class => "grid", width => "100%")

这被标记为css:

.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;
}

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

我想保留gridrow和gridrow_Alternative,并简单地覆盖其中一个...

所以它会从

改变

gridrow gridrow_Alternative gridrow gridrow_Alternative gridrow

是:

gridrow gridrow_Alternative 待用 gridrow_Alternative gridrow

因此它保持交替的色带,然后如果一个不活动,它会在TR中单独将其变为非活动状态,如下所示:

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

有没有人这样做过,或者他们能帮忙,因为我在网上找不到这样的东西,我认为这很奇怪。

2 个答案:

答案 0 :(得分:1)

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

然后检查行号/ 2的mod - 如果为0则为class =&#34; gridrow&#34; - 如果没有,class =&#34; gridrow_alternate&#34; e.g:

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

为我工作

答案 1 :(得分:1)

我遇到了这个,因为我正在寻找类似的解决方案。 mon12345的答案似乎有点复杂。如果您使用 data.IsAlternate 属性

,有一种更简洁的方法可以获得所需的结果
.RowAttributes(
    data => new Hash(@class => data.Item.Inactive ? "inactive" : 
           ((data.IsAlternate ? "gridrow" : "gridrow_alternate")))
)