我有一个使用Linq查询填充的GridView
var usersToApprove = from rl in QVDash.Permisisons
join u in QVDash.Userson rl.UserId equals u.UserId
join d in QVDash.Dashboards on rl.DashboardId equals d.DashboardId
where (u.ApprovedBy == approverId || isGod)
select new
{
PermissionId = rl.PermissionId,
Name = u.Name,
Area = u.Area,
Dashboard = d.DashboardName,
OpUnit = rl.Operational_Unit,
Cost_Centre = rl.Cost_Centre,
Fund = rl.Fund,
Project = rl.Project,
Approver = (from a in QVDash.Users where a.UserId == u.UserId && a.UserId == u.ApprovedBy select a.Name).FirstOrDefault()
};
grd_CurrentUsers.DataSource = usersToApprove ;
grd_CurrentUsers.DataKeyNames = new string[] { "PermissionId" };
grd_CurrentUsers.DataBind();
然而,这提出了一个问题,即GridView不允许排序。
我已经尝试了一些我已经找到的选项来构建一个自定义排序功能,但是我发现它最好是粗略的,这些问题如下:只有一种方式排序,分页重置排序等
我想知道的是,如果有更好的方法可以做到这一点。
我知道将gridview绑定到数据源可以解决排序问题,但是我不知道如何将Linq绑定到数据源。有可能吗?
答案 0 :(得分:1)
您是否尝试过LinqDataSource控件?看看这个链接。 http://weblogs.asp.net/scottgu/archive/2007/09/07/linq-to-sql-part-9-using-a-custom-linq-expression-with-the-lt-asp-linqdatasource-gt-control.aspx
关键部分:“为了处理自定义查询场景,您可以实现一个事件处理程序来处理控件上的”Selecting“事件。在这个事件处理程序中,您可以编写任何想要检索数据模型结果的代码。” p>
这允许您使用自定义LINQ查询进行排序,分页等。
答案 1 :(得分:0)
最后用这个网站的排序代码弄明白了 http://forums.asp.net/t/1368247.aspx