3

有谁知道如何右对齐gridview的一列的标题。一直在网上搜索,仍然找不到解决方案。

Horizo​​ntalAlign='Right' 适用于数据,但不适用于标题。我不想右对齐所有列,而只想右对齐一个。

这是代码的摘录:

<asp:GridView ID="gvCustomer" AutoGenerateColumns="False" runat="server">
    <Columns>
        <asp:BoundField DataField="CustomerId" HeaderText="Customer Id" />

               (other fields here)

                <asp:TemplateField HeaderText="Contact Name" HeaderStyle-HorizontalAlign="Right" >
                    <ItemTemplate>
                            <asp:Label runat="server" ID="lblContactName" Text='<%# Eval("ContactName") %>' />
                    </ItemTemplate>
                    <ItemStyle HorizontalAlign="Right" />
                    <HeaderStyle HorizontalAlign="Right" />
                </asp:TemplateField>
    </Columns>
</asp:GridView>

任何帮助表示赞赏。谢谢!

尼基

4

7 回答 7

7

1 您可以在控件上定义 GridView

<HeaderStyle HorizontalAlign="Right" />

注意:从项目中删除您的标签。他必须在您的 GridView 控件上

所以

<asp:GridView ID="gvCustomer" AutoGenerateColumns="False" runat="server">
    <HeaderStyle  HorizontalAlign="Right" />
    .....
</asp:GridView>

2 或者您可以在您的项目上定义

<asp:TemplateField HeaderStyle-HorizontalAlign="Right">

注意:使用此解决方案删除 <HeaderStyle HorizontalAlign="Right" />(必须在您的 GridView 内而不是项目内)

于 2012-10-09T15:39:34.080 回答
2

我们有同样的问题,但我设法克服它。

这是我的解决方案:D

<asp:TemplateField>
     <HeaderStyle Width="100px"/><ItemStyle Width="100px" />
     <HeaderTemplate>
         <div style="text-align:right;">Contact Name</div>
     </HeaderTemplate>
     <ItemTemplate>
        <asp:Label runat="server" ID="lblContactName" Text='<%# Eval("ContactName") %>' />
     </ItemTemplate>
</asp:TemplateField>
于 2016-04-17T06:43:50.393 回答
1

嗯,Horizo​​ntalAlignment 对我来说很好用。

我只是把这个快速测试放在一起。请注意,第二列在字段标记中使用 Headerstyle-Horizo​​ntalAlign,而第三列使用带有 Horizo​​ntalAlign 的单独 HeaderStyle 标记。两者都工作得很好。

<asp:GridView ID="gvThings" runat="server" AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField DataField="text" HeaderText="Text" ItemStyle-Width="200" />
        <asp:BoundField DataField="number1" HeaderText="Number 1" ItemStyle-Width="200" ItemStyle-HorizontalAlign="Right" HeaderStyle-HorizontalAlign="Right" />
        <asp:TemplateField HeaderText="Number 2" ItemStyle-Width="200" ItemStyle-HorizontalAlign="Right">
            <HeaderStyle HorizontalAlign="Right" />
            <ItemTemplate>
                <asp:Label ID="lblNumber2" runat="server" Text='<%# Eval("number2")%>' />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
 </asp:GridView>

我认为您的想法是正确的,您只是在某些细节上犯了错误。您是否定义了不可覆盖的主题?

于 2012-10-09T16:01:42.103 回答
1

在我见过的示例中,已使用以下方法为特定列设置了列标题对齐方式:

<asp:BoundField DataField="CustomerId" HeaderStyle-HorizontalAlign="Right" />

但这可能等同于您已经在模板中使用的内容:

<HeaderStyle HorizontalAlign="Right" />

如果这不起作用,则问题可能不是您的标题未对齐,而是您的标题的内容被拉伸到列的整个宽度,因此对齐无关紧要。

例如,如果您的单元格标题包含带有 text-align: left 的标题,并且该标题的宽度是其容器的 100%,则容器的水平对齐不会影响它:

在此处输入图像描述

作为一个实验,尝试将 HeaderStyle Width 属性设置为较小的值,看看这是否会影响对齐:

<HeaderStyle HorizontalAlign="Right" Width="50px" />

在此处输入图像描述

您可能必须收缩标题的容器以适合列标题文本,以便标题的 Horizo​​ntalAlign 生效。

于 2012-10-09T15:46:24.797 回答
1

我知道我的回答为时已晚,但对仍在寻找此问题答案的新人会有所帮助。

基本上我们可以使用以下任何选项

<asp:TemplateField HeaderStyle-HorizontalAlign=Right>

或者

<HeaderStyle HorizontalAlign="Right" />

DOM 会将其创建为<th align="right" scope="col">Quantity</th>. 由于某些原因,这个 align = right 属性不起作用,需要分析才能知道正确的原因。

但是您可以通过创建一个类来使特定的标题右对齐并确保也为标题设置了 Horizo​​ntalAlign 属性来实现这一点。

th[align="right"] { text-align:right; }

于 2015-03-31T11:48:57.557 回答
0

尝试这个..

int i=GridView3.HeaderRow.Cells.Count;
    GridView3.HeaderRow.Cells[0].HorizontalAlign = HorizontalAlign.Right;
于 2013-02-22T05:56:44.737 回答
0

对于那些可能在 Gridview 上使用 AutoGenerateColumns=True 的人来说,这是上面未涵盖的答案。例如,如果您想从代码隐藏中填充 Gridview,并且还想从代码隐藏中以编程方式创建标题行:

在填充 Gridview 并调用 DataBind() 之后,在代码中添加以下代码:

        foreach (TableCell cel in grid.HeaderRow.Cells)
        {
            if (cel.Text == "Price")
            {
                cel.Style.Add("width","100%");
                cel.Style.Add("text-align", "right");
            }
        } 

这将使包含“价格”的标题单元格 100% 宽度,并在单元格中右对齐单词“价格”。显然,“网格”是我的 GridView 控件的 ID。标题行中的每个单元格都是托管代码上下文中的一个 TableCell 元素。

我在研究这个主题时的观察是,所有答案似乎都假设您在页面的 HTML 中使用模板方法,当然,OP 是,但我不是,也许你们中的一些人不是。

此外,我在这个主题上看到的大多数答案都忽略了我们只想在一个特定的标题单元格上设置对齐,而不是整个标题行中的所有单元格。在我的情况下,我希望所有标题单元格都左对齐,除了我想要右对齐的“价格”标题单元格。

人们可能不想在 HTML 中创建标题,而是在代码隐藏方法中创建标题是有原因的。如果这描述了您的情况,我的回答将使您能够设置每个标题单元格的对齐方式。

干杯,-=卡梅伦

于 2021-07-09T16:22:49.100 回答