【发布时间】:2012-01-02 12:32:55
【问题描述】:
我有一个gridview,它的数据源来自linq to sql语句:
var query = from user in dataContext.tbl_files
select new { user.File_Name, user.Upload_Time, user.Uploaded_By };
GridView1.DataSource = query.ToList();
GridView1.DataBind();
我正在尝试实现 gridview 的排序功能:
public void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
string previousSortExpression = (string)ViewState["SortDirection"];
string sortExpression = e.SortExpression;
SortDirection sortDirection = e.SortDirection;
if (sortExpression.Equals(previousSortExpression))
{
sortDirection = SortDirection.Descending;
ViewState["SortDirection"] = string.Empty;
}
else
ViewState["SortDirection"] = sortExpression;
string direction = sortDirection == SortDirection.Ascending ? "ASC" : "DESC";
e.SortExpression = string.Format("it.{0} {1}", e.SortExpression, direction);
DataTable dataTable = (DataTable)GridView1.DataSource; // here returns null!
if (dataTable != null)
{
DataView dataView = new DataView(dataTable);
dataView.Sort = e.SortExpression ;
GridView1.DataSource = dataView;
GridView1.DataBind();
}
}
但是" DataTable dataTable = (DataTable)GridView1.DataSource; " 行返回 null 但是数据源的计数是 4。我收到了这个错误:
{“无法将'System.Collections.Generic.List
1[<>f__AnonymousType03[System.String,System.Nullable`1[System.DateTime],System.String]]'类型的对象转换为'System.数据.DataTable'。"}
如何对我的 gridview 进行排序并纠正我的错误?谢谢..
【问题讨论】:
-
为什么你不使用 linq2sql 数据源,这样你的排序工作开箱即用?
标签: c# asp.net linq linq-to-sql