ASP.NET Настройка ширины столбца DataBound в GridView - PullRequest
12 голосов
/ 25 ноября 2011

У меня есть GridView, который использует BoundField для столбцов. Я пытаюсь установить максимальную ширину для моего столбца UserInfo.

Я пробовал много разных способов, но ни один из них не работает. Ниже приведен код для моего GridView :

<asp:GridView ID="GridView1" AutoGenerateEditButton="True" 
ondatabound="gv_DataBound" runat="server" DataSourceID="SqlDataSource1"
AutoGenerateColumns="False">

<Columns>
                <asp:BoundField HeaderText="UserId" 
                DataField="UserId" 
                SortExpression="UserId"></asp:BoundField>

                <asp:BoundField HeaderText="Username" 
                DataField="Username" 
                SortExpression="Username"></asp:BoundField>

                <asp:BoundField HeaderText="UserInfo" 
                DataField="UserInfo" 
                SortExpression="UserInfo"></asp:BoundField>

                </Columns>
</asp:GridView>

Поиск предложений о том, как установить ширину определенного столбца, который является моим UserInfo столбцом.

Ответы [ 6 ]

22 голосов
/ 25 ноября 2011

Я сделал небольшую демонстрацию для вас.Демонстрируя, как отображать длинный текст.

В этом примере есть столбец Name, который может содержать очень длинный текст. boundField будет отображать все содержимое в ячейке таблицы, и поэтому ячейка будет расширяться по мере необходимости (из-за содержимого)

TemplateField будет также отображаться как ячейка, НО она содержит div , который ограничивает width любого контекста, например, 40px.Таким образом, этот столбец будет иметь некоторую максимальную ширину!

    <asp:GridView ID="gvPersons" runat="server" AutoGenerateColumns="False" Width="100px">
        <Columns>
            <asp:BoundField HeaderText="ID" DataField="ID" />
            <asp:BoundField HeaderText="Name (long)" DataField="Name">
                <ItemStyle Width="40px"></ItemStyle>
            </asp:BoundField>
            <asp:TemplateField HeaderText="Name (short)">
                <ItemTemplate>
                    <div style="width: 40px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis">
                        <%# Eval("Name") %>
                    </div>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

enter image description here

Вот мой демонстрационный код за

 public partial class gridViewLongText : System.Web.UI.Page
 {
     protected void Page_Load(object sender, EventArgs e)
     {
         #region init and bind data
         List<Person> list = new List<Person>();
         list.Add(new Person(1, "Sam"));
         list.Add(new Person(2, "Max"));
         list.Add(new Person(3, "Dave"));
         list.Add(new Person(4, "TabularasaVeryLongName"));
         gvPersons.DataSource = list;
         gvPersons.DataBind();
         #endregion
     }
 }

 public class Person
 {
     public int ID { get; set; }
     public string Name { get; set; }

     public Person(int _ID, string _Name)
     {
         ID = _ID;
         Name = _Name;
     }
 }
6 голосов
/ 25 ноября 2011

добавьте HeaderStyle в ваше поле:

    <asp:BoundField HeaderText="UserId"
                DataField="UserId" 
                SortExpression="UserId">

                <HeaderStyle Width="200px" />

</asp:BoundField>
4 голосов
/ 25 ноября 2011

Ширина может быть установлена ​​для определенного столбца, как показано ниже: В процентах:

<asp:BoundField HeaderText="UserInfo"  DataField="UserInfo"  
SortExpression="UserInfo" ItemStyle-Width="100%"></asp:BoundField>

ИЛИ

По пикселям:

<asp:BoundField HeaderText="UserInfo"  DataField="UserInfo"  
SortExpression="UserInfo" ItemStyle-Width="500px"></asp:BoundField>
1 голос
/ 14 июля 2013

Это будет работать для всех ситуаций при работе с шириной.

`<asp:TemplateField HeaderText="DATE">
   <ItemTemplate>
   <asp:Label ID="Label1" runat="server" Text='<%# Bind("date") %>' Width="100px"></asp:Label>
   </ItemTemplate>
  </asp:TemplateField>`
0 голосов
/ 10 ноября 2016

Эй, недавно я понял, как установить ширину, если ваша база данных gridview с sql dataset.first установила эти элементы управления RowStyle-Wrap="false" HeaderStyle-Wrap="false", а затем вы можете установить ширину столбца столько, сколько хотите. например: ItemStyle-Width="150px" HeaderStyle-Width="150px"

0 голосов
/ 25 ноября 2011
<asp:GridView ID="GridView1" AutoGenerateEditButton="True" 
ondatabound="gv_DataBound" runat="server" DataSourceID="SqlDataSource1"
AutoGenerateColumns="False" width="600px">

<Columns>
                <asp:BoundField HeaderText="UserId" 
                DataField="UserId" 
                SortExpression="UserId" ItemStyle-Width="400px"></asp:BoundField>
   </Columns>
</asp:GridView>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...