Asp.net mvc 4 MVC4:asp.net mvc webgrid中的日期时间列排序
我一直在尝试对Asp.net mvc 4 MVC4:asp.net mvc webgrid中的日期时间列排序,asp.net-mvc-4,datetime,webgrid,Asp.net Mvc 4,Datetime,Webgrid,我一直在尝试对asp.net mvc webgrid中的日期时间列进行排序 这是我的密码: grid.Column(header: "Product Purchased Date",columnName:"PurchasedDate" canSort: true,format: @<text> @item.PurchasedDate.ToString("MM/dd/yyy")</text> grid.Column(标题:“产品购买日期”,列名称:“Pu
asp.net mvc webgrid
中的日期时间列进行排序
这是我的密码:
grid.Column(header: "Product Purchased Date",columnName:"PurchasedDate" canSort: true,format: @<text>
@item.PurchasedDate.ToString("MM/dd/yyy")</text>
grid.Column(标题:“产品购买日期”,列名称:“PurchasedDate”可排序:true,格式:@
@item.PurchasedDate.ToString(“MM/dd/yyy”)
当我尝试使用上述代码时,我遇到以下错误:
无法从“lambda表达式”转换为
'System.Func'
与System.Web.Helpers.WebGrid.Column(string,string,System.Func,string,bool)”匹配的最佳重载方法有一些无效参数
如果我在不使用columName的情况下应用上述代码,我将无法执行排序
如果我遗漏了什么,请道歉。我建议,如果您想将其作为字符串排序,请在模型对象中添加一个函数,该函数以字符串形式返回值,而不是将其内联转换。因此,对象上会有一个字段,如PurchasedDataString
例如,这是我在最近的一个项目中使用的内容。字段DateRange
作为字符串返回,并且可以像“基本”字段一样进行排序:
如果您将DateTime转换为字符串并对其进行格式化,WebGrid将以字符串的形式对列进行排序,这与DateTime格式列的预期结果不符。Hai Shane感谢您的回复。在模型对象中执行排序时是否有任何更改。?Shane您的代码返回为“01-JAN”。但我需要使用此格式“01/08/2014”。C正确。当然,您可以使用String.Format()返回任何值。但是,我认为您需要显示和排序版本。您的显示版本使用2014年8月1日的格式,但排序版本为2014-01-08(年-月-日)所以你没有得到环绕效果。有什么解决办法吗?因为我必须以这种格式“01/08/2014”在UI中显示日期。是的,你指定了两个字段,按一个排序,但显示另一个。
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);
}
}
}