Форматирование данных в GridView с помощью AutoGenerateColumns true

109
7

У меня есть GridView в ASP.NET 2.0 с AutoGenerateColumns, установленным в true. Он будет связан во время выполнения с DataSet с одной из многих возможных схем, и я бы предпочел не создавать сетки и столбцы для каждой возможной схемы.


Некоторые из столбцов в сетке иногда будут значениями с плавающей запятой. Похоже, что форматирование номера по умолчанию составляет 0.345 в 0.345000. Есть ли способ изменить формат номера по умолчанию, чтобы он обрезал заданное число десятичных знаков?

спросил(а) 2021-01-19T18:57:32+03:00 6 месяцев, 1 неделя назад
1
Решение
100

Вы можете использовать строки в своей схеме вместо плавающей запятой для целей отображения и выполнять форматирование вручную, что-то вроде этого:


EDIT. Без LINQ вы можете сделать то же самое, изменив строки в схеме:


// load source data
DataSet myData = GetDataSet();

// create column for formatted data.
myData.Tables["MyTable"].Columns.Add("AmountFormatted", typeof(string));

// apply formatting
foreach (DataRow dr in myData.Tables["MyTable"].Rows)
dr["AmountFormatted"] = string.Format("{0:0.###}", dr["Amount"]);

// remove source column and replace with formatted column
myData.Tables["MyTable"].Columns.Remove("Amount");
myData.Tables["MyTable"].Columns["AmountFormatted"].ColumnName = "Amount";

С#, решение на основе LINQ:


var theData = GetDataSchema1();
var dataSource = theData.Tables["MyTable"].Select().Select(dr =>
new { /* select only columns you want displayed, and apply formatting */
MyColumn1 = dr["MyColumn1"],
MyColumn2 = dr["MyColumn2"],
MyColumn3 = String.format("#.###", dr["MyColumn3"]),
MyColumn4 = dr["MyColumn4"],
MyColumn5 = dr["MyColumn5"]
}
);
MyGridView1.DataSource = dataSource;
MyGridView1.DataBind()

ответил(а) 2021-01-19T18:57:32+03:00 6 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема