所以我正在编写一个执行某些报告的页面,它非常动态,用户可以对数据进行分组和排序。我已经能够将我的动态分组下来然后排序,除了现在我生成的linq-to-sql sql order by语句是从我想要的那样倒退。我想我需要弄清楚如何在ListView中触发Sorting事件时从LinqDataSource返回结果,这样我就可以通过子句附加我的分组顺序。
目前我正在覆盖LinqDataSource选择事件以提供它的结果并在那里进行动态分组,但是然后结果会被列表视图上的排序修改,我认为必须有一些方法来获得该结果排序或排序事件。
任何见解都会受到赞赏,与此同时,我将试图自己解决这个问题。
答案 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);
}