我一直在DateTime
尝试排序 asp.net mvc webgrid
列。
这是我的代码:
grid.Column(header: "Product Purchased Date",columnName:"PurchasedDate" canSort: true,format: @<text>
@item.PurchasedDate.ToString("MM/dd/yyy")</text>
当我尝试使用上面的代码时,我收到了这个错误:
无法转换为&#39; lambda表达式&#39;至 &#39; System.Func&#39;
System.Web.Helpers.WebGrid.Column(string, string, System.Func, string, bool)' has some invalid arguments
的最佳重载方法匹配。
如果我在不使用columName的情况下应用上述代码,则无法执行排序。
如果我错过任何事情,请道歉。
答案 0 :(得分:0)
我建议,如果要将其排序为字符串,请在Model对象中添加一个函数,该函数将值作为字符串返回,而不是将其转换为内联。所以在对象上会有一个像PurchasedDateAsString这样的字段。
例如,这是我在最近的一个项目中使用的东西。字段DateRange
作为字符串返回,并且可以像它是&#34; base&#34;那样进行排序。字段:
public class PeriodView
{
[Key]
public int PeriodId { get; set; }
public string Name { get; set; }
public int Number { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public int Year { get; set; }
public string Month { get; set; }
public string DateRange
{
get
{
var start = String.Format("{1}-{0}",
CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(StartDate.Month).Substring(0, 3),
StartDate.Day);
var end = String.Format("{1}-{0}",
CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(EndDate.Month).Substring(0, 3),
EndDate.Day);
return String.Format("{0} to {1}", start, end);
}
}
}
答案 1 :(得分:0)
如果将DateTime转换为字符串并将其格式化,则WebGrid会将列排序为字符串,这与DateTime格式列的预期结果不正确。