动态地将 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 属性
我有一个网格视图。我使用数据表在代码后面动态绑定 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 属性