繁体   English   中英

如何修改GridView的宽度?

[英]How to modify the width of the GridView?

我在Repeater控件内使用GridView来生成三个GridView,它们具有3个相似的列,并且它们之间具有不同数量的不同列。 一切正常,一切顺利。 我只是面对一个带有GridView宽度的探针。 问题如下:

第二个GridView有很多列,这就是为什么它的宽度超出页面边界的原因,而第三个Gridview也是如此。 我通过使每列的标题以虚拟方式显示来解决了这个问题,但是客户不喜欢它。 然后,我尝试最小化字体大小,然后达到7px,他们说字体太小。 现在,我想知道该问题的解决方案。 有什么帮助吗?

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

参见下图,其中显示了第一个GridView和第二个: 在此处输入图片说明

如果您使用的是div,则可以执行以下操作:

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

如果gridview中的数据溢出,它将放置水平滚动条

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

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稍作改动。 我使用了一个名为“锁定”的类,该类在RowDataBound期间应用于GridView单元,但是效果在不同的浏览器之间有所不同,而且看起来很hacky。

的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或Google'在asp.net中冻结gridview列',然后尝试根据您的要求自定义方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM