0

我使用this implementation來使用實體框架爲jqGrid進行服務器端搜索。我遇到的問題是,儘管搜索對於文本或數字字段工作正常,但使用DateTime值進行搜索無法正常工作。CLR DateTime對象與SQL Server的比較DateTime

問題是我的模型類中的DateTime對象將對象的字符串表示形式(即格式爲2/9/2014 12:00:00 AM)發送到數據庫,但數據庫格式爲2014-09-03 00:00:00:000。結果,比較總是失敗。

我不能將我的DateTime屬性更改爲字符串,所以我很難過。結果集通過存儲過程(一個簡單的SELECT * FROM [TableName])返回,所以我嘗試格式化相關的Date字段並返回它,但它返回爲一個nvarchar。

有沒有人遇到過這個或有任何建議如何解決這個問題?我會很感激任何幫助,謝謝!

回答

0

只是爲任何遇到此問題的人提供答案。我採取了以下措施來解決這個問題:

1)再一看jqGrid的支持類以下變化:

_formatObjects.Add(parseMethod.Invoke(props[rule.field], new object[] { rule.data })); 

_formatObjects.Add(parseMethod.Invoke(props[rule.field], new object[] { (parseMethod.ReturnType.FullName == "System.DateTime" && rule.data != "") ? Convert.ToDateTime(rule.data, CultureInfo.CreateSpecificCulture("fr-FR")).ToString() : rule.data })); 

2A)在我的控制,我添加了每當我直接從表中獲取代碼時(以下代碼需要明確指定列名以截斷時間部分):

//For matching date instead of datetime values 
if (wc.Clause.Contains("Date")) 
{ 
    wc.Clause = wc.Clause.Replace("DeliveryDate", "DbFunctions.TruncateTime(DeliveryDate)"); 
} 
results = results.Where(wc.Clause, wc.FormatObjects); 

2B)如果正在從存儲過程返回的數據,我剛返回一個適當的日期字段從SP(這種方法將用於日期時間字段只工作如果時間戳部分是全零)。

希望這可以幫助別人。