我在Repeater控件中使用GridView生成三个GridView,它们之间有3个相似的列和不同数量的不同列。一切都很好,很好。我只是面对一个GridView宽度的问题。 问题如下:
第二个GridView有很多列,这就是它的宽度超出页面边框的原因,第三个gridview也是如此。我解决了这个问题,让每个列的标题都得到了良好的显示,但客户不喜欢它。然后,我试图最小化字体的大小,我达到7px,他们说它太小了。现在,我想知道这个问题的解决方案是什么。有什么帮助吗?
顺便说一下,我从左到右使用滚动条没有问题,但是如果我可以设置前四列是固定的。我也不知道该怎么做:)。那么如果这是这个问题的唯一解决方案怎么做呢
见下图显示的第一个GridView和第二个:
答案 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列',然后尝试根据您的要求自定义方法。