【发布时间】:2011-09-25 15:08:58
【问题描述】:
我有一个使用 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 绑定到数据源。有可能吗?
【问题讨论】:
-
上面的代码是怎么调用的?
-
顺便说一句,没有必要在你的标题中加入“(ASP.NET C#)”之类的东西。这就是标签的用途。
-
@John 我这样做是因为我看到人们因为不看标签而得到错误的响应
-
因为人们可以使用标签来过滤他们不感兴趣的问题,并用正确的标签突出问题,我建议你使用标签而不是标题。标题没有这两个特征。
-
@Nix 我正在做的是从几个地方调用它作为方法,然后该方法运行上面的代码,并使用.DataSouce 和.DataBind 将输出绑定到gridview。当我对gridview进行更改时,我这样做是为了更新它