gpt4 book ai didi

c# - SPGridView 中日期/时间的 ObjectDataSource 过滤

转载 作者:太空宇宙 更新时间:2023-11-03 14:26:18 25 4
gpt4 key购买 nike

我正在为这个问题挠头……我有日期/时间列,我想按日期/时间排序,但在过滤时,只按日期/时间的日期部分过滤。我的过滤器代码(设置方法中包含的 lambda)如下所示:

        this.taskGrid.AllowFiltering = true;
this.odsGrid.Filtering += (sender, e) =>
{
var odsv = (ObjectDataSourceView)sender;
var filterExp = odsv.FilterExpression;

if (filterExp.Contains("Date")
|| filterExp.Contains("Deadline")
|| filterExp.Contains("Client Proof"))
{
var fieldAndVal = filterExp.Split('=');
DateTime date;

if (DateTime.TryParse(fieldAndVal[1].Replace("'", string.Empty), out date))
{
odsv.FilterExpression = "("
+ fieldAndVal[0] + " >= '" + date
+ "') AND ("
+ fieldAndVal[0] + " < '" + date.AddDays(1) + "')";
}
}

this.ViewState["FilterExpression"] = odsv.FilterExpression;
};

所以它所做的是改变一个看起来像“[Client Proof] = '8/5/2010 4:24:44 PM'”的表达式并将其重写为“([Client Proof] >= '8/5/2010') AND ([客户证明] < '8/6/2010')".

现在是关键,它在我的开发环境(Win2K3 32 位,MOSS 2K7)中工作,但是一旦我将解决方案提升到 QC 环境(Win2K8R2 64 位,MOSS 2K7),执行相同的过滤器导致空网格。 有没有人有任何想法?还是查看应用过滤器时实际发生的情况的好方法?谢谢!

预计到达时间:

事实证明,当它到达Filtering 事件时,[{1}] = '{0}' 的过滤器格式已经被已应用,我正在做的所有事情都没有做任何事情。以前的开发人员将日期视为字符串并使用 LIKE,它工作正常,但排序很糟糕。因此,按日期/时间排序并像字符串一样过滤是我想要的,但似乎无法将两者结合在一起。

最佳答案

我想了想。您能否生成一个仅包含完整 DateTime 列中的日期部分的新列?然后,您可以将过滤器应用于仅包含日期部分的列。

您可以尝试将 BoundField.DataField 设置为 DateOnly 列。

附言不确定为什么它在一个环境中工作而不在另一个环境中工作。我猜是数据问题/差异。

关于c# - SPGridView 中日期/时间的 ObjectDataSource 过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3859719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com