动态地将 gridview 列左右对齐

align gridview columns to left and right dynamically

我有一个网格视图。我使用数据表在代码后面动态绑定 gridview。我的 gridview 中只有两列,一列是文本列,另一列是数字列。我想将左列、文本列向左对齐,数字列向右对齐。下面是我的代码:

DataTable dt = new DataTable();
        
dt.Columns.Add("Fee Breakdown", typeof(string));
dt.Columns.Add(" ", typeof(string));
dt.Rows.Add("First Page", String.Format("{0:0.00}", 14));
dt.Rows.Add("Additional Page(s)", String.Format("{0:0.00}", 3));
        
        
protected void grdCalculate_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;
                
    }
}

dt.rows.add中的数字14和3是动态计算的值,位数可以增减。 rowsdatabound 中的上述代码没有将列左右对齐,我试图对齐列以便所有小数都可以正确右对齐并且更容易添加数字。下面是gridview的图片。如您所见,$14.00 和 $3.00 中的小数点没有正确对齐。如何将第一行向左对齐,将右行向右对齐。下面是我的 aspx 页面代码:

<asp:GridView ID="grdCalculate" runat="server" GridLines="Horizontal" OnRowDataBound="grdCalculate_RowDataBound" ></asp:GridView>

试试这个格式:

   protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow) 
        {
            e.Row.Cells[3].HorizontalAlign = HorizontalAlign.Right;
            e.Row.Cells[3].Text = String.Format("{0:C2}", Convert.ToDecimal(e.Row.Cells[3].Text));
        }
    }

然后只需在绑定时输入值即可。

例如:

dt.Rows.Add("First Page", 14);

这个方法有点不同,但您可以尝试使用下面的方法,因为您有两列要绑定:

<asp:GridView ID="grdCalculate" runat="server" GridLines="Horizontal" OnRowDataBound="grdCalculate_RowDataBound">
 <columns>
   <asp:TemplateField ItemStyle-HorizontalAlign="Left" HeaderText="Name">
       <ItemTemplate><%# Eval("Property_Name_1")%></ItemTemplate>
   </asp:TemplateField>
   <asp:TemplateField ItemStyle-HorizontalAlign="Right" HeaderText="Price">
       <ItemTemplate><%# Eval("Property_Name_2")%></ItemTemplate>
   </asp:TemplateField>
 </columns>
</asp:GridView>

刚刚在 GridView 的 header.

中使用了这个 ItemStyle-HorizontalAlign 属性