#c# #.net-4.0 #jqgrid #t4
#c# #.net-4.0 #jqgrid #t4
Вопрос:
Я пытаюсь отформатировать дату, используемую с помощью 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(", rn ", 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, чтобы автоматически правильно генерировать его для будущих объектов.
Как я могу это сделать? Заранее спасибо! Гильермо.
Редактировать
Я читал, что я могу ссылаться на Microsoft.VisualBasic и использовать
Microsoft.VisualBasic.Information.TypeName(prop)
Но он возвращает CodeProperty2. Я не могу понять, как получить реальный тип.
Я пытался с
Microsoft.VisualBasic.Information.TypeName(prop).Type
и затем он говорит:
ошибка CS1061: компиляция преобразования: ‘string’ не содержит определения для ‘Type’ и не удалось найти метод расширения ‘Type’, принимающий первый
параметр типа ‘string’ (вам не хватает директивы using или ссылки на сборку?)
Итак, он знает, что это строка, но toString() также возвращает CodeProperty2 .
Есть идеи? Заранее спасибо! Гильермо.
Ответ №1:
Как насчет:
prop.Type.GetType() == typeof (System.DateTime)
? "sorttype: 'date', datefmt: 'm/d/Y h:i AmPm'"
: ""
Комментарии:
1. Нет, prop.Type. GetType() выводит систему. __ComObject
2. Хм, вы знаете, какие интерфейсы реализует этот Com-объект? Возможно, есть способы запросить, какой тип он представляет?
3. Не знаю, в любом случае, я могу это выяснить?
Ответ №2:
Поскольку у меня пока не было другого ответа, я исправляю его, глядя на имя свойства. Если он содержит строку «Date», я форматирую ее как Date, но я бы хотел избежать этого, поскольку я не хочу привязывать имя свойства jqgrid, я имею в виду, что нужно иметь возможность называть свойство как угодно, и оно должно продолжать работать и показывать его какдата.