2011-10-10 116 views
0

我想格式化與jqgrid一起使用的日期。如何獲取帶有模板t4的屬性類型以格式化jqgrid中的日期時間?

我正在使用T4的MVC腳手架。

中有這樣的

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()== 「日期時間」 的T4模板的一部分? 「sorttype:'date',datefmt:'m/d/Y h:我AmPm'」:「」不起作用。

我想格式化日期如果字段是DateTime,就像我看到的網頁/ Date(1315968717587)/並且我想更改T4模板以自動爲將來實體生成它。

我該如何做到這一點? 在此先感謝!吉列爾莫。

編輯

我讀過,我可以參考Microsoft.VisualBasic程序和使用

Microsoft.VisualBasic.Information.TypeName(prop) 

但它返回CodeProperty2。我無法弄清楚如何獲得真正的類型。 我試圖與

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

,然後它說: 錯誤CS1061:編譯變換:「字符串」不包含定義爲「類型」和沒有擴展方法「類型」接受第一AR gument類型的'string'可以找到(你是否缺少使用指令或程序集引用?)

所以它知道它是字符串,但ToString()也返回CodeProperty2。

任何想法? 在此先感謝!吉列爾莫。

回答

0

由於我沒有任何其他的答案,我將其固定在看屬性的名稱。如果它包含字符串「Date」,我將它格式化爲Date,但我想避免這種情況,因爲我不想綁定屬性jqgrid的名稱,我的意思是,應該能夠命名屬性無論什麼人都想要,它應該繼續工作,並顯示它作爲日期。

0

什麼:

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

不,prop.Type.GetType()輸出System .__ ComObject – polonskyg

+0

嗯,你知道這個COM對象實現了什麼接口?也許有辦法查詢它代表什麼類型? – FuleSnabel

+0

不知道,無論如何,我可以找到它? – polonskyg