ASP.NET设置GridView列的最大宽度大小

时间:2011-11-25 07:33:42

标签: c# asp.net gridview

我在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列的大小?

3 个答案:

答案 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来实现TableDiv控制列的宽度。