GridViewの1列だけを簡単に右揃えできますか?
私はこれを持っています
<asp:GridView ID="GridView1" runat="server"></asp:GridView>
多くの列を持つ(動的に生成された)DataTableにバインドされます。 「価格」列を右揃えにするだけです。
(この問題に遭遇したとき、私はHTMLを出力する必要があるのかと思っています<table>
GridViewを使用する代わりに。 HTMLを使用すると、完全に制御できます。)
はい、できますが、私はthinkAutoGenerateColumns
をtrue(デフォルトではデフォルト)に設定している場合は、正しくする必要がありますRowDataBound
イベントを使用して列を整列します。補足として、AutoGenerateColumns
をfalseに設定して BoundFields を使用する方が簡単な場合は、より多くのフォーマットオプションが提供され、おそらくRowDataBound
の必要性がなくなります。イベント。
グリッドビュー:
<asp:GridView ID="GridView1" OnRowDataBound="GridView1_RowDataBound" runat="server"></asp:GridView>
分離コード:
protected void GridView1_RowDataBound(object o, GridViewRowEventArgs e)
{
//Assumes the Price column is at index 4
if(e.Row.RowType == DataControlRowType.DataRow)
e.Row.Cells[4].HorizontalAlign = HorizontalAlign.Right;
}
お役に立てば幸いです。
<Columns>
...
<asp:BoundField DataField="Price" HeaderText="Price"
ItemStyle-HorizontalAlign="Right" ItemStyle-Width="80" />
...
</Columns>
質問がずっと前に投稿されたとしても、これはあなたがたまたまこのページにたどり着く誰かを助けるかもしれません。
与えられた答えは、配置が適用される列のインデックスが事前にわかっているか、列が設計時に.aspxページで作成されることを前提としています。しかし、これは常にそうであるとは限りません。
列は自動生成されますとindexヘッダーが '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;
}
}
}
項目をdivのItemTemplateで囲み、divにスタイルを設定します。
<ItemTemplate>
<div id="divReportName">
<asp:Label ID="lblReport" runat="server" ></asp:Label>
</div>
</ItemTemplate>
// css for div
#divReportName { text-align: left;}
これをGridView
の最初の行に追加しましたか?
OnRowDataBound="GridView1_RowDataBound"
ItemStyle-を使用してBoundfield内で整列を実行できます
このような :
<asp:BoundField DataField="SOH" HeaderText="SOH" SortExpression="SOH" ItemStyle-HorizontalAlign="Right"/>
これは私のために機能しましたが、グリッドビューの特定の列のみを配置する必要がありました