Я почесываю голову на этом ... У меня есть столбцы даты / времени, которые я хочу отсортировать по дате / времени, но при фильтрации только фильтрует по части даты даты / времени.Мой код фильтра (лямбда, содержащаяся в методе установки) выглядит следующим образом:
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 '"и переписывает его как" ([Проверка клиента]> =' 8/5/2010 ') И ([Проверка клиента] <' 8/6/2010 ') ". </p>
Теперь вот кикер, он работает в моей среде разработки (32-битная Win2K3, MOSS 2K7), но как только я продвигаю решение в среду QC (64-битная Win2K8R2, MOSS 2K7), выполнение того же фильтра приводит к пустойgrid. У кого-нибудь есть идеи?Или хороший способ увидеть, что на самом деле происходит при применении фильтра?Спасибо!
ETA:
Как выясняется, к моменту получения события Filtering
формат фильтра [{1}] = '{0}'
уже применен и все такоеЯ ничего не делаю.Предыдущие разработчики рассматривали дату как строку и использовали LIKE
, которая работала нормально, но тогда сортировка была чокнутой.Таким образом, сортировка по дате / времени и фильтрация как строка были бы тем, что я хотел бы, но, кажется, не могу соединить их вместе.