我在VS2005上使用ASP.NET C#。
我有一个名为Description
的列的GridView表,由于输入总是很长,因此水平描述非常长。
我希望GridView具有所有列的最大宽度大小。
我尝试了很多方法,但没有一种方法有效。
ItemStyle-Width="50px"
,
HeaderStyle-BorderWidth="50px"
,
HeaderStyle-Width="50px"
,
RowStyle-Width="50px"
,
Width="50px"
以下是我的GridView的代码片段:
<asp:GridView ID="GridView1" AutoGenerateEditButton="True" ondatabound="gv_DataBound" runat="server" DataSourceID="SqlDataSource1">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="UserSelector" OnCheckedChanged="UserSelector_CheckedChanged" ondatabound="gv_DataBound" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
任何人都知道如何根据我的情况调整GridView列的大小?
答案 0 :(得分:4)
这是我控制列宽的方法。
1.在标题中添加CSS。
<style type="text/css">
.maxWidthGrid
{
max-width: 300px;
overflow: hidden;
}
</style>
2.然后在必要的列中使用CSS,例如ItemStyle-CssClass="maxWidthGrid"
<asp:BoundField ItemStyle-CssClass="maxWidthGrid" DataField="ClientName" HeaderText="Client Name"
ReadOnly="True" SortExpression="ClientName" />
答案 1 :(得分:3)
我改变了我的代码就是你在想什么呢?
<RowStyle Width="150px"/>
删除所有藏匿
<asp:TemplateField><ItemTemplate> </ItemTemplate></asp:TemplateField>
并使用简单的
<columns> </columns>
在这里,我认为您的代码看起来像AutoGenerateColumns =“True”或false假装不重要
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true" DataSourceID="SqlDataSource1">
<Columns>
<asp:CheckBox ID="UserSelector" OnCheckedChanged="UserSelector_CheckedChanged" ondatabound="gv_DataBound" runat="server" />
</Columns>
<RowStyle Width="150px"/>
</asp:GridView>
答案 2 :(得分:1)
您可以处理RowDataBound
事件。
protected int widestData;
protected void GridView1_RowDataBound(object sender,
GridViewRowEventArgs e)
{
System.Data.DataRowView drv;
drv = (System.Data.DataRowView)e.Row.DataItem;
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (drv != null)
{
String catName = drv[1].ToString();
Response.Write(catName + "/");
int catNameLen = catName.Length;
if (catNameLen > widestData)
{
widestData = catNameLen;
GridView1.Columns[2].ItemStyle.Width =
widestData * 30;
GridView1.Columns[2].ItemStyle.Wrap = false;
}
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
widestData = 0;
}
查看此How to: Set GridView Web Server Control Column Width Dynamically以获取更多详细信息。
如果您的gridview autogeneratecolumns
属性设置为false并且您正在创建custom columns
,那么您可以使用templatefileds
来实现Table
和Div
控制列的宽度。