如何使用ASP.Net MVC3在webgrid中隐藏隐藏字段的列?

时间:2011-12-02 23:28:51

标签: asp.net-mvc-3 razor hide webgrid

如何隐藏应该从视图中隐藏的列。我通过隐藏对象来处理这个问题,但是该列仍然在UI中显示为一个瘦的列,行中没有任何内容。有没有办法阻止绘制项目?

grid.Column(null, null, format: @<input type="hidden" name="RevisionId" value="@item.LatestRevisionId"/>)

感谢。

2 个答案:

答案 0 :(得分:6)

WebGrid帮助程序允许您使用style属性将CSS类应用于各个列。不幸的是,虽然这样可以隐藏tbody部分中的列,但您无法对列标题应用不同的样式。您可以将相同的样式应用于所有列,这使得它非常无用。所以一种可能性就是使用CSS:

table th:first-child, table td:first-child {
    display: none;
}

这假设您要隐藏第一列,并且客户端浏览器支持:first-child伪选择器,这可能不是旧浏览器的情况。

因此,如果您需要支持旧版浏览器,您可以使用jQuery将隐藏样式应用于第一列的标题和行,或者直接隐藏它们:

$(function () {
    $('table th:first-child, table td:first-child').hide();
});

如果您希望获得更多控制权,我建议您查看MvcContrib GridTelerik Grid

答案 1 :(得分:0)

* 强文 *来自Darin的解决方案只是部分,因为“table th:first-child”也将hide the "canPage:true" grid footer(用于分页)。

解决方案是添加additional styling

在你的“head”部分(或者在CSS文件中,如果你想在所有表格上应用它):

<style type="text/css">
    .nodisplay {display: none;}
</style>

在Webgrid部分:

footerStyle : "table-footer",
...
grid.Column(null, null, style:"nodisplay", ...

在CSS文件中:

.table-footer {
    display: normal
}