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

6
我正在使用ASP.NET C#在VS2005上进行开发。
我有一个GridView表格,其中有一列名为“Description”,由于输入的内容总是非常长,因此描述在水平方向上非常宽。
我希望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列的大小?


这对我有用:https://dev59.com/CnTYa4cB1Zd3GeqPqA_i#17457296 - mbomb007
3个回答

8
这是我如何控制列宽的方法。
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" />

由于某种原因,我不得不使用“.maxWidthGrid td”来使其生效,但这对我起作用了。 - gaijintendo

4

我修改了代码,这符合您的想法吗?

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

@Thomos 你好,你的方法可以应用于在 asp 标签中调用的列,对吗?如果我将 AutoGenerateColumns 设置为 true,那么如何将 div 实现到不在 asp 标签中的列上,并且会在网页加载时自动显示? 如果我将其设置为 false,如何在 asp 标签中创建这些列呢? - gymcode

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

查看此 如何:动态设置 GridView Web 服务器控件列宽 获取更详细的信息。

如果您的 GridView autogeneratecolumns 属性设置为 false,并且您正在创建 自定义列,则可以使用 templatefileds,在其中可以实现 TableDiv 来控制列的宽度。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接