[英]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.