Это также будет работать:
<%#= String.Format("{0, 0:N2}",DataBinder.Eval (Container.DataItem, "DiscountAmount"))%>
Редактировать : Я разделяю ваш дискомфорт с декларативным синтаксисом привязки данных. Вы можете выполнить то же самое в выделенном коде , вызвав событие RowDataBound
и применив любые изменения, которые вы хотите внести, поскольку данные привязаны к GridViewRow
.
Для этого вам нужно подключить событие в разметке, установив OnRowDataBound
в качестве имени вашего обработчика события, что-то вроде этого:
<asp:GridView ID="InvoiceGrid" OnRowDataBound="InvoiceGrid_RowDataBound".....>
Затем вы создаете обработчик событий в коде с такой подписью:
protected void InvoiceGrid_RowDataBound(object sender, GridViewRowEventArgs e)
Первое, что вы делаете в обработчике событий, это проверяете тип GridViewRow
типа:
if (e.Row.RowType == DataControlRowType.DataRow)....
Затем вы делаете любое форматирование, которое хотите.
Для людей, довольных декларативной разметкой, это может показаться обременительным. Но для людей, которым удобно писать код, вы можете сделать намного больше здесь, в коде позади.