#c# #asp.net #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;
}
}
Числа 14 и 3 в dt.rows.add являются динамически вычисляемым значением, и количество цифр может увеличиваться и уменьшаться. Приведенный выше код в rowsdatabound не выравнивает столбцы слева и справа, я пытаюсь выровнять столбцы так, чтобы все десятичные дроби могли быть правильно выровнены по правому краю и было проще добавлять числа. Ниже приведено изображение gridview. Как вы можете видеть, десятичные дроби неправильно указаны в $14,00 и $3,00. Как я могу выровнять первую строку слева и правую строку справа. Ниже приведен мой код страницы aspx:
<asp:GridView ID="grdCalculate" runat="server" GridLines="Horizontal" OnRowDataBound="grdCalculate_RowDataBound" ></asp:GridView>
Ответ №1:
Попробуйте этот формат:
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);
Ответ №2:
Это немного другой подход, но вы можете попробовать использовать приведенное ниже, так как у вас есть два столбца для привязки:
<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>
Просто использовал это свойство ItemStyle-HorizontalAlign в заголовке GridView.