如何修改GridView的宽度?

时间:2012-01-10 07:57:43

标签: c# asp.net

我在Repeater控件中使用GridView生成三个GridView,它们之间有3个相似的列和不同数量的不同列。一切都很好,很好。我只是面对一个GridView宽度的问题。 问题如下:

第二个GridView有很多列,这就是它的宽度超出页面边框的原因,第三个gridview也是如此。我解决了这个问题,让每个列的标题都得到了良好的显示,但客户不喜欢它。然后,我试图最小化字体的大小,我达到7px,他们说它太小了。现在,我想知道这个问题的解决方案是什么。有什么帮助吗?

顺便说一下,我从左到右使用滚动条没有问题,但是如果我可以设置前四列是固定的。我也不知道该怎么做:)。那么如果这是这个问题的唯一解决方案怎么做呢

见下图显示的第一个GridView和第二个: enter image description here

2 个答案:

答案 0 :(得分:1)

如果你正在使用div,你可以这样做:

<div style="overflow:auto">
</div>

如果gridview中的数据溢出

,它将放置水平滚动条

答案 1 :(得分:0)

之前我遇到过类似的问题,并且我使用了不同的解决方案:

1)将GridView包装在具有明确宽度的div中,并确保水平滚动:

<div style="width:700px; overflow:auto; overflow-y:hidden;">

2)增加实际页面的宽度。我已经使用了多个不同宽度的母版,用于普通和更广泛的内容,并相应地继承。

3)对于适当的列,将宽度设置为小(如20-30px)并隐藏GridView的RowDataBound事件中的单元格文本内容。接下来,将包含单元格文本的工具提示添加到单元格本身,可选择设置BackColor以指示内容并将<br/>转换为Environment.NewLine,反之亦然:

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowState != DataControlRowState.Edit)
    {
        if (e.Row.Cells[0].Text != "")
        {
            e.Row.Cells[0].ToolTip = e.Row.Cells[0].Text.Replace(Environment.NewLine, "<br/>");
            e.Row.Cells[0].Text = "";
            e.Row.Cells[0].BackColor = Color.Lavender;
        }
    }
}

我感谢此方法可能对您没有帮助,因为列标题也是一个问题。

关于固定列,GridView控件没有内置功能,但您可以通过CSS将其拉出来。我使用了一个名为'locked'的类,我在RowDataBound中应用于GridView单元格,但是浏览器之间的效果各不相同,而且看起来非常糟糕。

<强> CSS

td.locked, th.locked
{
    position:relative;
    left:expression(this.offsetParent.scrollLeft-3);
}

<强> C#

e.Rows.Cells [0] .CssClass =“locked”;

我建议从这里开始http://forums.asp.net/t/1120278.aspx或谷歌'在asp.net中冻结gridview列',然后尝试根据您的要求自定义方法。