CopCoder Ответов: 3

Как выровнять столбцы в Gridview


Я пытаюсь выровнять столбцы моего GridView. Я прочитал все статьи, которые смог найти, и дошел до крайности, чтобы добавить horizontalalign="Center" почти к каждому тегу, который его примет. Проблема в том, что когда он запускается, все выравнивается влево. Что я упускаю?

    <asp:GridView ID="gvAgency" runat="server"
    AutoGenerateColumns="False"
    OnRowEditing="gvAgency_RowEditing"
    OnRowCancelingEdit="gvAgency_RowCancelingEdit"
    OnRowUpdating="gvAgency_RowUpdating"
    OnPageIndexChanging="gvAgency_PageIndexChanging"
    OnRowDataBound="gvAgency_RowDataBound"
    Width="100%" DataKeyNames="Town" BackColor="White"
    BorderColor="#7AC0DA" BorderStyle="Double" BorderWidth="3px"
    CellPadding="4" GridLines="Horizontal"
    UseAccessibleHeader="False" PageSize="7"
    ShowHeaderWhenEmpty="True"
    SortedDescendingHeaderStyle-HorizontalAlign="NotSet"
    HorizontalAlign="Center" AllowPaging="True">
    <RowStyle HorizontalAlign="Center" />
    <AlternatingRowStyle BorderStyle="Solid"
    HorizontalAlign="Center" />
    <Columns>
        <asp:TemplateField HeaderText="Town"
        SortExpression="Town">
            <EditItemTemplate>
                <asp:Label ID="txtTown" runat="server"
                Text='<%# Eval("Town") %>'></asp:Label>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="lblTown" runat="server"
                Text='<%# Bind("Town") %>'></asp:Label>
            </ItemTemplate>
            <FooterStyle BackColor="#31869B"
            HorizontalAlign="Center" />
            <HeaderStyle BackColor="#31869B" Width="300px"
            HorizontalAlign="Center" />
            <ItemStyle Width="300px" HorizontalAlign="Center" />
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Lethality Screens">
            <EditItemTemplate>
                <asp:Label ID="txtScreens" runat="server"
                Text='<%# Eval("Danger")%>'></asp:Label>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="lblScreens" runat="server"
                Text='<%# Eval("Danger")%>'></asp:Label>
            </ItemTemplate>
            <FooterStyle BackColor="#31869B" />
            <HeaderStyle BackColor="#31869B" Width="120px" />
            <ItemStyle Width="120px" HorizontalAlign="Center" />
        </asp:TemplateField>
    </Columns>
    <EditRowStyle HorizontalAlign="Center" />
    <FooterStyle BackColor="#5B5A94" ForeColor="White"
     BorderColor="Black" />
     <HeaderStyle BackColor="#5B5A94" BorderColor="Black"
     Font-Bold="True" ForeColor="White"
     HorizontalAlign="Center" />
    <PagerStyle BackColor="#31869B" ForeColor="White"
     HorizontalAlign="Center" BorderColor="Black"
     Font-Bold="True" />
    <RowStyle BackColor="White" ForeColor="#333333"
     HorizontalAlign="Center" />
     <SelectedRowStyle BackColor="#7AC0DA"
     Font-Bold="True" ForeColor="White" />
    <SortedAscendingCellStyle BackColor="#F7F7F7" />
    <SortedAscendingHeaderStyle BackColor="#487575" />
    <SortedDescendingCellStyle BackColor="#E5E5E5" />
    <SortedDescendingHeaderStyle BackColor="#275353" />
</asp:GridView>

3 Ответов

Рейтинг:
2

Wombaticus

Вы должны быть в состоянии добавить в качестве атрибута TemplateField, например

<asp:TemplateField ItemStyle-HorizontalAlign="Center" ...></asp:TemplateField>

Или, в коде позади, вы можете установить его, например
gvAgency.Columns(N).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter

замена N на любой соответствующий номер столбца


CopCoder

Попытался добавить атрибут, но ItemStyle-HorizontalAlign="Center" выдает ошибку, что атрибут несовместим. В настоящее время у меня есть HorizontalAlign="Center" в каждом из моих элементов, но это тоже не работает.

Я также попытался поиграть с вашим вторым вариантом, но DefaultCellStyle и DatagridviewContentAlignment не являются свойствами Gridview.

Wombaticus

Какую IDE вы используете и какую версию .NET?

CopCoder

Против 2012 года .Объем 4.5 сайта с программированием VB.NET задний конец.

Wombaticus

Ладно, извини, я немного ошибся во втором, должно быть
гвагенси.Столбцы(N).ItemStyle.HorizontalAlign = Горизонтальное Выравнивание.Центр
но установка
<asp:TemplateField ItemStyle-HorizontalAlign="Center" /><asp:TemplateField>
все в порядке. Оба эти метода работают для меня в VS 2012 и .NET 4.5

Рейтинг:
16

Sergey Alexandrovich Kryukov

Вместо добавления атрибутов к каждому элементу, просто используйте CSS. В худшем случае вы можете добавить CSS class атрибут к некоторым элементам. Именно для этого и предназначен CSS.

—СА


CopCoder

Поэтому я поместил некоторый код в стиль отдельной страницы, чтобы управлять выравниванием gridview, и это почти сработало. Он выравнивает текстовые ячейки, но все еще не может вычислить аббревиатуру, чтобы выровнять кнопки командного поля.

/* стиль для обычных ячеек заголовка */
.GridView в Че {
выравнивание текста: по центру;
}
/* стиль для обычных ячеек таблицы */
.GridView в ТД {
выравнивание текста: по центру;

Есть идеи, что контролирует командное поле?

Sergey Alexandrovich Kryukov

В порядке. В CSS есть много вещей, но это не проблема, чтобы изучить его постепенно, не обязательно сразу.

Как кто-то может дать вам какое-либо представление о командном поле, если вы не показали его определение?

—СА

Рейтинг:
1

massnonn

<asp:templatefield itemstyle-cssclass="text-center">


Richard Deeming

Неформатированный, необъяснимый дамп кода-это не решение проблемы.

И в этом вопросе нет ничего, что указывало бы на то, что OP использует Bootstrap или имеет обычай text-center класс определяется где угодно.