一个ListView,一个LinqDataSource,linq-to-sql和排序

时间:2008-11-07 15:45:30

标签: asp.net linq linq-to-sql

所以我正在编写一个执行某些报告的页面,它非常动态,用户可以对数据进行分组和排序。我已经能够将我的动态分组下来然后排序,除了现在我生成的linq-to-sql sql order by语句是从我想要的那样倒退。我想我需要弄清楚如何在ListView中触发Sorting事件时从LinqDataSource返回结果,这样我就可以通过子句附加我的分组顺序。

目前我正在覆盖LinqDataSource选择事件以提供它的结果并在那里进行动态分组,但是然后结果会被列表视图上的排序修改,我认为必须有一些方法来获得该结果排序或排序事件。

任何见解都会受到赞赏,与此同时,我将试图自己解决这个问题。

2 个答案:

答案 0 :(得分:1)

太棒了我想我找到了答案,在我的LinqDataSource上将AutoSort设置为false,然后自己对数据进行排序,因为我已经为其他数据排序了。

答案 1 :(得分:1)

您可以使用Linq根据用户输入操作查询结果(IEnumerables)。例如(非常伪代码事件处理程序):

public void OnUserClickNameColumn(object sender, EventArgs e){
  var data = DataProvider.RetrieveAllUsers();
  // switch between sorting asc and desc when user clicks on a column head
  SessionHelper.CurrentUser.NameColumnSort = !SessionHelper.CurrentUser.NameColumnSort;
  if(SessionHelper.CurrentUser.NameColumnSort) // true =  sort asc else sort desc
    UserDataGrid.DataSource = data.OrderBy(x=>x.Name);
  else
    UserDataGrid.DataSource = data.OrderByDescending(y=>y.Name);
}