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

C# ASP.NET设置GridView列的最大宽度大小,c#,asp.net,gridview,C#,Asp.net,Gridview,我正在VS2005上使用ASP.NETC 我有一个GridView表,其中有一列名为Description,由于输入总是很长,所以描述在水平方向上很长 我希望GridView对所有列都有一个最大宽度大小 我试过很多方法,但都不管用 ItemStyle Width=“50px” HeaderStyle BorderWidth=“50px” HeaderStyle Width=“50px” RowStyle Width=“50px” Width=“50px” 下面是my GridView的代码片段:

我正在VS2005上使用ASP.NETC

我有一个GridView表,其中有一列名为
Description
,由于输入总是很长,所以描述在水平方向上很长

我希望GridView对所有列都有一个最大宽度大小

我试过很多方法,但都不管用

ItemStyle Width=“50px”

HeaderStyle BorderWidth=“50px”

HeaderStyle Width=“50px”

RowStyle Width=“50px”

Width=“50px”

下面是my 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列的大小吗?

我更改了代码,这就是你想的吗

        <RowStyle Width="150px"/>

把所有的藏品都拿走

<asp:TemplateField><ItemTemplate> </ItemTemplate></asp:TemplateField>

使用简单的

<columns> </columns>

在这里,我想你的代码将如何看起来像AutoGenerateColumns=“真”或“假”并不重要

    <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>

您可以处理
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;
}
查看此项以了解更多详细信息


如果您的gridview
autogeneratecolumns
属性设置为false,并且您正在创建
自定义列
,那么您可以使用
模板文件
在其中实现
Div
来控制列的宽度。

这就是我控制列宽的方式

1.在标题中添加CSS

<style type="text/css">
    .maxWidthGrid
    {
        max-width: 300px;
        overflow: hidden;
    }
</style>

@Thomos您好,您的方法可以应用于在asp选项卡中调用的列,对吗?如何将div实现为不在asp选项卡中,但在加载网页时会自动显示的列,因为我已将
AutoGenerateColumns
设置为true。如果我将其设置为false,如何在asp选项卡中创建这些列?出于任何原因,我必须使用“.maxWidthGrid td”使其保持不变,但这对我有效。这对我有效:
<asp:BoundField ItemStyle-CssClass="maxWidthGrid" DataField="ClientName" HeaderText="Client Name"
                    ReadOnly="True" SortExpression="ClientName" />