2008-11-07 60 views
0

因此,我正在編寫一個頁面,它執行一些報告,它非常動態,用戶可以對數據進行分組和排序。我已經能夠得到我的動態分組,然後排序,除了現在我生成的linq-to-sql sql order by語句是從我想要的結果倒退。我想我需要弄清楚如何在ListView中觸發排序事件時從LinqDataSource返回結果,以便我可以通過子句添加我的分組順序。一個ListView,一個LinqDataSource,LINQ到SQL和訂購

目前我重寫LinqDataSource選擇事件以提供它的結果並在那裏進行動態分組,但是然後結果被列表視圖中的Sort所修改,並且我想必須有某種方式才能獲得該結果排序或排序事件期間。

任何洞察力將不勝感激,同時我會試圖自己弄清楚這一點。

回答

1

太棒了我想我找到了我的答案,在我的LinqDataSource上將AutoSort設置爲false,然後自己對數據進行排序,因爲我已經對其他數據進行了排序。

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); 
}