Форматирование данных в GridView с AutoGenerateColumns true - PullRequest
5 голосов
/ 14 декабря 2011

У меня GridView в ASP.NET 2.0 с AutoGenerateColumns, установленным в true.Во время выполнения он будет связан с DataSet с одной из многих возможных схем, и я бы не стал настраивать сетки и столбцы для каждой возможной схемы.быть значениями с плавающей запятой.Кажется, форматирование чисел по умолчанию превращает 0,345 в 0,345000.Есть ли способ изменить формат числа по умолчанию, чтобы он обрезался до установленного числа десятичных знаков?

1 Ответ

4 голосов
/ 14 декабря 2011

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

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";

C #, решение на основе 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...