web-dev-qa-db-ja.com

.NET GridView-1列だけを右揃えできますか?

GridViewの1列だけを簡単に右揃えできますか?

私はこれを持っています

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

多くの列を持つ(動的に生成された)DataTableにバインドされます。 「価格」列を右揃えにするだけです。

(この問題に遭遇したとき、私はHTMLを出力する必要があるのか​​と思っています<table> GridViewを使用する代わりに。 HTMLを使用すると、完全に制御できます。)

12
Aximili

はい、できますが、私は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;
}

お役に立てば幸いです。

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

質問がずっと前に投稿されたとしても、これはあなたがたまたまこのページにたどり着く誰かを助けるかもしれません。

与えられた答えは、配置が適用される列のインデックスが事前にわかっているか、列が設計時に.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;
        }
   }
}
1
Albert M

項目をdivのItemTemplateで囲み、divにスタイルを設定します。

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

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

これをGridViewの最初の行に追加しましたか?

OnRowDataBound="GridView1_RowDataBound" 
0
djciko

ItemStyle-を使用してBoundfield内で整列を実行できます

このような :

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

これは私のために機能しましたが、グリッドビューの特定の列のみを配置する必要がありました

0
Christopher