2011-12-02 60 views
4

我该如何隐藏应该从视图中隐藏的列。我通过隐藏对象来处理这个问题,但是这个列仍然在UI中显示为一个没有任何内容的行。有没有办法阻止物品被绘制?如何使用ASP.Net MVC3在webgrid中隐藏隐藏字段的列?

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

谢谢。

回答

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

+0

我试过这种方式,它工作完美。该列是隐藏的,但问题是'Webgrid'不再具有分页功能。它只显示前20条记录(20条是最大行数),而不显示底部的页面。你认为这可能是因为隐藏的列是记录的“id”吗? – Hanady

+0

谢谢我也面临这个问题,它的工作完美 – user1557020

+0

当我有多个表时应该选择什么? – Franziee

0

* strong text *来自达林的解决方案只是部分的,因为“桌子:第一个孩子”也将hide the "canPage:true" grid footer(用于寻呼)。

解决方法是添加additional styling

在“头”部分的(或可选择地在CSS文件中,如果你想它适用于所有表):

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

在的WebGrid部分:

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

在CSS文件:

.table-footer { 
    display: normal 
}