Как я могу получить тип свойства с шаблоном t4 для форматирования даты и времени в jqgrid? - PullRequest
0 голосов
/ 11 октября 2011

Я пытаюсь отформатировать дату, используемую с jqgrid.

Я использую леса MVC с T4.

В шаблоне T4 есть одна деталь, подобная этой

jQuery("#ajaxGrid").jqGrid({
        url: '@Url.Action("GridData")',
        datatype: "json",
        jsonReader: { repeatitems: false, id: "<#= Model.PrimaryKeyName #>" },
        colNames: [<#= string.Join(", ", properties.Select(prop => "'" + prop.Name + "'")) #>],
        colModel: [
            <#= string.Join(", \r\n         ", properties.Select(prop =>
                string.Format("{{ name: '{0}', editable: true, sortable: true, hidden: {1}, align: {2} {3}}}", prop.Name, prop.Name == Model.PrimaryKeyName ? "true" : "false", "left", prop.Type.ToString() == "DateTime" ? "sorttype: 'date', datefmt: 'm/d/Y h:i AmPm'": "")
            )) #>
        ],
        rowNum: 5,
        pager: '#ajaxGridPager',
        width: '850',
        height: '15em'
    });

prop.Type.ToString () == "DateTime"? "sorttype: 'date', datefmt: 'm / d / Y h: i AmPm'": "" не работает.

Я хочу отформатировать дату, если поле имеет значение DateTime, как на веб-странице, которую я вижу / Date (1315968717587) /, и я хочу изменить шаблон T4, чтобы автоматически генерировать его правильно для будущих объектов.

Как я могу это сделать? Заранее спасибо! Гильермо.

EDIT

Я прочитал, что могу ссылаться на Microsoft.VisualBasic и использовать

Microsoft.VisualBasic.Information.TypeName(prop)

Но возвращается CodeProperty2. Я не могу понять, как получить реальный тип. Я пробовал с

Microsoft.VisualBasic.Information.TypeName(prop).Type 

и тогда он говорит: ошибка CS1061: преобразование компиляции: строка не содержит определения типа и метод расширения типа не принимает первый аргумент может быть найден комментарий типа 'string' (вам не хватает директивы using или ссылки на сборку?)

Так что он знает, что это строка, но ToString () также возвращает CodeProperty2.

Есть идеи? Заранее спасибо! Гильермо.

Ответы [ 2 ]

0 голосов
/ 11 октября 2011

Поскольку другого ответа у меня еще не было, я исправляю его, глядя на название объекта.Если она содержит строку «Date», я форматирую ее как Date, но я бы хотел этого избежать, поскольку я не хочу связывать имя свойства jqgrid, я имею в виду, что нужно иметь возможность называть свойствочто угодно, и он должен продолжать работать и показывать его как дату.

0 голосов
/ 11 октября 2011

А как же:

prop.Type.GetType() == typeof (System.DateTime) 
   ?  "sorttype: 'date', datefmt: 'm/d/Y h:i AmPm'"
   :  ""
...