在asp:GridView中控制行高的万无一失的方法?

时间:2009-06-19 22:10:16

标签: asp.net gridview

我似乎无法阻止我的gridview行太高......从谷歌搜索,似乎这是一个非常常见的问题,但我似乎无法解决它。

<GridView ID="gridComputerApps" DataSourceID="llbComputerApplication" runat="server" AutoGenerateColumns="False" 
            CellPadding="0" CellSpacing="0" style="overflow:hidden"
            GridLines="Horizontal"
            EmptyDataText ="NO APPLICATIONS FOUND FOR THIS COMPUTER."
            DataKeyNames="ComputerID, ApplicationID" RowStyle-Height="0px" RowStyle-BorderWidth="0" RowStyle-VerticalAlign="Top"
            EnableViewState="False">
            <Columns>

我也尝试过:

Private Sub gridComputerApps_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gridComputerApps.RowDataBound
        e.Row.Height = New Unit(5, UnitType.Pixel)
    End Sub

有解决这个问题的完全万无一失的方法吗?

2 个答案:

答案 0 :(得分:2)

您是否尝试在css中设置行高?

CssClass的{​​{1}}和RowStyle样式的AlternateRowStyle属性中设置此样式:

GridView

答案 1 :(得分:0)

这似乎已经解决了这个问题....也许并非一切都是必要的,但我正在继续前进。

table, tr, th, td {height: 5px; line-height:1.0; 
                             margin: 0px 0px 0px 0px; 
                             border:0px 0px 0px 0px; 
                             padding: 1px 1px 1px 1px;
                             padding-top: 0px;
                             padding-right: 0px;
                             padding-bottom: 0px;
                             padding-left: 0px;
                             vertical-align: middle;
                             overflow:hidden;
                             overflow-x:hidden}

需要注意的一个特别重要的事情是padding-top,padding-left等... Firefox和IE解释填充不同,所以它在FF中是正确的,只是: 填充:1px 1px 1px 1px;

但IE似乎忽略了这一点。

另一个值得注意的问题是CSS当然会覆盖在RowDataBound事件中设置行高,这是有道理的。

另一个更新: 由于一些未知原因,上面的原始CSS停止了为我工作。我碰巧使用的是Blueprint CSS,这会导致一些样式出现问题,这会影响我的自定义样式表。

所以无论如何,我想我终于拥有了...... 1.基本上,为了安全(也许只有当你像我一样混乱),你必须明确设置每个可能会影响高度的属性。这是我正在使用的CSS:

.xGridview tr, th, td, input {height: auto; 
                       line-height:normal; 
                     margin: 0px 0px 0px 0px; 
                     border:0px 0px 0px 0px; 
                     padding: 0px 0px 0px 2px; 
                     padding-top: 0px;
                     padding-right: 0px;
                     padding-bottom: 0px;
                     padding-left: 2px;
                     margin: 0px 0px 0px 0px;
                     margin-bottom: 0px;
                     margin-left: 0px;
                     margin-right: 0px;
                     margin-top: 0px;
                     vertical-align: middle;
                     overflow:hidden;
                     background-color:White}
  1. 我的网格中碰巧有一个必需的字段验证器;它呈现为隐形,所以直到我使用Firebug才发现它。更糟糕的是,我认为它是在一个表格中呈现的,它在某种程度上忽略了外表的CSS。

  2. 我在网格中有一个RadioButtonList,它默认呈现为一个表格。这可以通过在RadioButtonList控件上设置RepeatLayout =“Flow”来改变,而不是使其呈现为跨度,更好。另请注意,我将元素INPUT添加到CSS中,这是在连接到单选按钮的标签上设置vertical-align所必需的。

  3. 所以这似乎终于舔了它。