【问题标题】:ASP.NET Set GridView Column max width sizeASP.NET 设置 GridView 列最大宽度大小
【发布时间】:2023-03-29 13:47:01
【问题描述】:

我在 VS2005 上使用 ASP.NET C#。

我有一个 GridView 表,其中有一个名为Description 的列,由于输入总是很长,因此横向的描述很长。

我希望 GridView 具有所有列的最大宽度大小。

我尝试了很多方法,但都没有奏效。

ItemStyle-Width="50px",

HeaderStyle-BorderWidth="50px",

HeaderStyle-Width="50px",

RowStyle-Width="50px",

Width="50px"

下面是我的 GridView 的代码 sn-p:

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

【问题讨论】:

标签: c# asp.net gridview


【解决方案1】:

这就是我控制列宽的方式。

1.在标题中添加CSS。

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

2.然后在ItemStyle-CssClass="maxWidthGrid"这样的必要列中使用CSS

<asp:BoundField ItemStyle-CssClass="maxWidthGrid" DataField="ClientName" HeaderText="Client Name"
                    ReadOnly="True" SortExpression="ClientName" />

【讨论】:

  • 无论出于何种原因,我不得不使用 '.maxWidthGrid td' 来让它坚持下去,但这对我有用。
【解决方案2】:

我更改了我的代码,这是你在想什么?

        <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 选项卡中调用的列,对吗?如何将 div 实现到不在 asp 选项卡中的列,但在加载网页时会自动显示,因为我已将 AutoGenerateColumns 设置为 true。如果我将其设置为 false,如何在 asp 选项卡中创建这些列?
【解决方案3】:

您可以处理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 来控制列的宽度。

【讨论】:

    猜你喜欢
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    相关资源
    最近更新 更多