【问题标题】:a ListView, a LinqDataSource, linq-to-sql and orderingListView、LinqDataSource、linq-to-sql 和排序
【发布时间】:2008-11-07 15:45:29
【问题描述】:
所以我正在编写一个页面来进行一些报告并且它非常动态,用户可以对数据进行分组和对列进行排序。我已经能够得到我的动态分组,然后排序,除了现在我生成的 linq-to-sql sql order by 语句与我想要的相反。我想我需要弄清楚在 ListView 中触发 Sorting 事件时如何获取从 LinqDataSource 返回的 Result,以便我可以按子句附加分组顺序。
目前我正在覆盖 LinqDataSource 选择事件以提供它的结果并在那里进行动态分组,但是结果由列表视图上的排序修改,我认为必须有某种方法可以在期间获得该结果排序或排序事件。
任何见解都将不胜感激,同时我将尝试自己解决这个问题。
【问题讨论】:
标签:
asp.net
linq
linq-to-sql
【解决方案1】:
太棒了,我想我找到了答案,在我的 LinqDataSource 上将 AutoSort 设置为 false,然后自己对数据进行排序,因为我已经为其他数据排序了。
【解决方案2】:
您可以使用 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);
}