.NET GridView - 你能正确对齐一列吗?

时间:2011-04-13 03:32:08

标签: c# asp.net gridview

您可以轻松地在GridView中右对齐一列吗?

我有这个

<asp:GridView ID="GridView1" runat="server"></asp:GridView>

它绑定到具有许多列的DataTable(动态生成)。我只想让“价格”栏右对齐。

(遇到这个问题,我想知道我是否应该打印HTML <table>而不是使用GridView。使用HTML我可以完全控制。)

6 个答案:

答案 0 :(得分:21)

是的,您可以,但如果您将AutoGenerateColumns设置为true(默认为默认值),我然后您需要使用{{1}右对齐列事件。作为旁注,如果您更容易将RowDataBound设置为false并使用BoundFields,这将为您提供更多格式选项,并且可能无需AutoGenerateColumns事件。

GridView的:

RowDataBound

代码隐藏:

<asp:GridView ID="GridView1" OnRowDataBound="GridView1_RowDataBound" runat="server"></asp:GridView>

希望有所帮助。

答案 1 :(得分:13)

<Columns>
...
    <asp:BoundField DataField="Price" HeaderText="Price" 
        ItemStyle-HorizontalAlign="Right" ItemStyle-Width="80" />
...
</Columns>

答案 2 :(得分:1)

即使很久以前发布的问题,这可能会帮助您碰巧遇到此页面的人。

给出的答案假设预先知道要应用对齐的列的索引,或者在.aspx页面上的设计时创建列;但情况并非总是如此。

对于寻找列自动生成的常规解决方案的人以及标题为“Price”的列的索引,事先不知道,这是一个解决方案

protected void grData_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        int i = ((DataTable)((GridView)sender).DataSource).Columns.IndexOf("Price");
        for (int j = 0; j < e.Row.Cells.Count; j++)
        {
            if (j == i)
                e.Row.Cells[j].HorizontalAlign = HorizontalAlign.Right;
            else
                e.Row.Cells[j].HorizontalAlign = HorizontalAlign.Left;
        }
   }
}

答案 3 :(得分:0)

将项目包含在div中的ItemTemplate中,然后将样式设置为div。

<ItemTemplate>
<div id="divReportName">
<asp:Label ID="lblReport" runat="server" ></asp:Label>
</div>
</ItemTemplate>

// css for div
#divReportName { text-align: left;}

答案 4 :(得分:0)

您可以使用ItemStyle -

在Boundfield中执行对齐 像这样:

<asp:BoundField DataField="SOH" HeaderText="SOH" SortExpression="SOH" ItemStyle-HorizontalAlign="Right"/>

这对我来说很有用,我只需要在gridview中对齐特定的列

答案 5 :(得分:0)

您是否在GridView的第一行添加了此内容?

OnRowDataBound="GridView1_RowDataBound"