TheRedEye Ответов: 1

Форматирование datetime и decimal в webgrid


Я заполняю веб-сетку MVC данными из схемы, которая неизвестна во время разработки. Все работает нормально, хотя я борюсь с форматированием данных. Я просто не знаю синтаксиса для установки свойства типа Func & lt;object, object>.

В контроллере
var fields = GetListOfFieldsFromDB();
foreach (var f in fields)
{
    var c = new System.Web.Helpers.WebGridColumn();
    c.ColumnName = f.FieldName;
    c.Header = f.FieldAlias;
    c.CanSort = true;
    switch (f.SqlDataType)
    {
        case "datetime":
            c.Format = (item) => string.Format("{0:dd MMM yyyy}", 
                             item.DontKnowTheNameOfTheFieldYet; // Need help here . 
            break;

        case "decimal":
            c.Format = item => item.ToString("C"); // Need more help here. 
                                                   // No clue what the syntax should be.
            break;

         // some more formats here
         ...
     }

   columnList.Add(c);
}


По мнению
var grid = new WebGrid(source: Model.Records, canPage: true, rowsPerPage: 20);
@grid.GetHtml(tableStyle: "table", columns: Model.Columns)


Что я уже пробовал:

c.Format = item => item.ToString("C"); //doesn't work

1 Ответов

Рейтинг:
9

Richard Deeming

Попробуйте использовать индексатор:

switch (f.SqlDataType)
{
    case "datetime":
        c.Format = item => string.Format("{0:dd MMM yyyy}", item[f.FieldName]);
        break;
    
    case "decimal":
        c.Format = item => item[f.FieldName].ToString("C");
        break;
 
    ...
}