Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何右对齐一个Gridview列的标题_Asp.net_Gridview_Header_Right Align - Fatal编程技术网

Asp.net 如何右对齐一个Gridview列的标题

Asp.net 如何右对齐一个Gridview列的标题,asp.net,gridview,header,right-align,Asp.net,Gridview,Header,Right Align,有人知道如何右对齐gridview中一列的标题吗。一直在搜索web,但仍然找不到解决方案 HorizontalAlign='Right'适用于数据,但不适用于标题。我不想右对齐所有列,只想右对齐一列 下面是代码的摘录: <asp:GridView ID="gvCustomer" AutoGenerateColumns="False" runat="server"> <Columns> <asp:BoundField DataField="Cu

有人知道如何右对齐gridview中一列的标题吗。一直在搜索web,但仍然找不到解决方案

HorizontalAlign='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>

(此处为其他字段)
感谢您的帮助。谢谢


Niki

1您可以在控件GridView上定义

<HeaderStyle HorizontalAlign="Right" />

注意:从项目中删除您的标记。他一定在你的GridView控制下

所以


.....
2或您可以在项目上定义

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

注意:使用此解决方案删除
(必须在GridView中,而不是项目中)

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

<asp:BoundField DataField="CustomerId" HeaderStyle-HorizontalAlign="Right" />
被拉伸到列的整个宽度,因此对齐方式无关紧要

例如,如果单元格标题包含文本align:left的标题,且该标题的宽度为其容器的100%,则容器的水平对齐不会影响该标题:

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

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


您可能需要收缩包装标题的容器以适应列标题文本,以便标题的水平对齐生效。

嗯,水平对齐对我来说很好

我只是做了一个快速测试。注意:第二列在字段标记中使用Headerstyle HorizontalAlign,而第三列使用带有HorizontalAlign的单独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>

我认为你的想法是对的,你只是在一些细节上犯了一个错误。您是否定义了不可重写的主题?

试试这个

int i=GridView3.HeaderRow.Cells.Count;
    GridView3.HeaderRow.Cells[0].HorizontalAlign = HorizontalAlign.Right;

我知道我的答案已经太迟了,但这对仍在寻找这个问题答案的新手来说是有帮助的

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

<asp:TemplateField HeaderStyle-HorizontalAlign=Right>


DOM将创建此项作为
Quantity
。由于某些原因,此align=right属性将不起作用,需要分析以了解正确的原因

但您可以通过创建一个类来实现这一点,该类使特定的标题正确对齐,并确保同时为标题设置HorizontalAlign属性

th[align=“right”]
{
文本对齐:右对齐;

}

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

这是我的解决方案: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>

联系人姓名

询问者发布的代码摘录已经包含
。。。必须在GridView中,而不是在模板项中,或者您可以使用,但必须在项目中删除。我需要在单独的列上正确对齐标题,而不是整个GridView。我没有意识到HeaderStyle不应该在模板项中。我按照你的建议删除并改为使用,但标题仍然是左对齐的。看,我认为这也行得通,这让我认为,也许他的列标题模板指定了一个容器,该容器具有自己的文本对齐方式,并且正在拉伸以适应列标题容器,避免列标题对齐。或者他的标题有一堆尾随空格,或者诸如此类的愚蠢行为。在任何情况下,我认为这不是一个“我该怎么做”的问题,而是一些nitnoid细节中的一个bug。标题中没有尾随空格或前导空格。我甚至在gridview rowdatabound中进行了测试:
code
protectedvoid gvvgvCustomer_rowdatabound(对象发送方,GridViewRowEventArgs e){if(e.Row.RowType==DataControlRowType.Header){txtest.Text='('+e.Row.Cells[3].Text+');}
code
我怀疑css文件正在覆盖设置,所以我把它放在页面表上。gvHeaderRightAlign th{text align:right;}并应用它:但它仍然不起作用。你有主题吗?主题可以设置不可覆盖的内容。如果有,请尝试删除主题,然后看看它是否起作用。如果没有,请尝试(a)看看生成的HTML,看看它到底放了什么,也许这会给你一个线索在您使用的任何浏览器中使用IE的开发工具或等效工具,以查看实际应用的样式以及它们来自何处。您可能有一种更高级的样式,它覆盖了gridview试图设置的样式。为什么您在去年问了9个问题,但您从未接受其中任何一个,并且只接受了这些问题-投了一个答案?很抱歉,我忙于工作。在Boundfield上尝试了HeaderStyle HorizontalAlign=“Right”,在HeaderStyle上尝试了HorizontalAlign=“Right”,但都不起作用。我还根据您的建议添加了宽度,但也不起作用。
<asp:TemplateField HeaderStyle-HorizontalAlign=Right>
<HeaderStyle HorizontalAlign="Right" />
<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>