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(这种方法将用于日期时间字段只工作如果时间戳部分是全零)。

希望这可以帮助别人。