1

GrdiViewasp.netページにあります。データソースをに設定していますDataTable。セルの値が文字列型の場合は左に設定HorizontalAlignする必要があります。それ以外の場合は小数の場合は右に揃えます。これを実装する方法を教えてください。のコードGridViewは次のとおりです。

      <asp:GridView ID="gridViewReport" runat="server" Height="1px"       OnRowDataBound="UsersGVRowDataBound" GridLines="both" Style="z-index: 100; 
        left: 2px; position: absolute; top: 1px; " Width="939px" CellPadding="4"   ForeColor="#333333" AllowSorting="True" OnSorting="gridViewReport_Sorting" Font-Names="Verdana" Font-Size="12px" OnSelectedIndexChanged="gridViewReport_SelectedIndexChanged1">
        <AlternatingRowStyle BackColor="White" />
        <RowStyle HorizontalAlign="Left" BackColor="#EFECE5" />            
        <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
        <SelectedRowStyle BackColor="#C0F6C0" ForeColor="#333333" Font-Bold="True" />
        <HeaderStyle BackColor="#CDE472"  Font-Bold="True" ForeColor="DarkGreen" HorizontalAlign ="Left"  Font-Italic="False" Font-Names="Verdana" Font-Overline="False"/>
        <EditRowStyle BackColor="#EAEAAE" />            
    </asp:GridView> 

また、を設定するためのコードDataSourceは次のとおりです。

gridViewReport.DataSource = _reportTable;
gridViewReport.DataBind();
4

3 に答える 3

2

各列に同じタイプのデータが含まれている場合、どの列に10進数が含まれ、どの列に含まれないかはすでにわかっています。

したがって、2つの列DataTableがあり、最初の列が文字列を運び、2番目の列が小数を運ぶことを考えると、次のことができます。

    protected void gridViewReport_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.Cells[0].HorizontalAlign = HorizontalAlign.Left;
            e.Row.Cells[1].HorizontalAlign = HorizontalAlign.Right;       
        }
    }

それ以外の場合、列に10進数または文字列のいずれかのテキストが含まれている場合は、これを行うことができます(たとえば、の2番目の列に10進数形式も含まれる可能性DataTableのあるテキストが含まれているとします)

    protected void gridViewReport_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            decimal val;
            if(decimal.TryParse(e.Row.Cells[1].Text, out val))
                e.Row.Cells[1].HorizontalAlign = HorizontalAlign.Right;
            else
                e.Row.Cells[1].HorizontalAlign = HorizontalAlign.Left;
        }
    }
于 2012-05-28T11:37:32.280 に答える
1

gridViewReport_ItemCreated()イベントを処理し、さまざまな列の配置を次のように設定できます。

e.Item.Cells[<zero-based-index-of-column>].Style["text-align"] = "right";

于 2012-05-28T10:39:23.750 に答える
0

gridViewReport_ondataboundイベントを処理できます。

protected void gridViewReport_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            decimal cellValue = 0.0m;
            DataRow dr = ((DataRowView)e.Row.DataItem).Row;

            if (dr[urs_cell_index] != null)
            {
                if (decimal.TryParse(dr[urs_cell_index].ToString(), out cellValue))
                {
                    e.Row.Cells[urs_cell_index].HorizontalAlign = HorizontalAlign.Right;
                }
                else
                {
                    e.Row.Cells[urs_cell_index].HorizontalAlign = HorizontalAlign.Left;
                }
            }
        }
    }
于 2012-05-28T11:03:51.490 に答える