您可以轻松地在GridView中右对齐一列吗?
我有这个
<asp:GridView ID="GridView1" runat="server"></asp:GridView>
它绑定到具有许多列的DataTable(动态生成)。我只想让“价格”栏右对齐。
(遇到这个问题,我想知道我是否应该打印HTML <table>
而不是使用GridView。使用HTML我可以完全控制。)
答案 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"