[英]ASP.net gridview sorting with linq result
到目前為止,我有一個linq查詢,它用filterconditions完美地填充了數據網格。 但是,當我嘗試實施排序時,我失敗了。
我后面有以下代碼。 它抓住了排序的開始。
protected void gvServers_Sorting(object sender, GridViewSortEventArgs e)
{
if (e.SortDirection == SortDirection.Ascending)
{
SortDataAsc(e.SortExpression);
}
else if (e.SortDirection == SortDirection.Descending)
{
SortDataDesc(e.SortExpression);
}
}
在這些子方法中,我想了解每個可能的排序表達式的排序。 但是,當我嘗試使用gridview中已經存在的數據時,將不允許我使用orderby對它進行限定
private void SortDataAsc(string p)
{
var data = gvServers.DataSource;
switch (p)
{
case "domain":
var sorted = data.nothinghappenshere
default:
break;
}
}
如您所見,在這里我無法指向數據(可能是因為它是一個變量),因此無法對其進行排序。
我在網上閱讀的內容是,您可以像我在SortDataAsc()中嘗試的那樣從gridview中獲取數據,但是這種方式似乎並不起作用。
我只是想按我的結果集中的某個字段排序(在這種情況下,這是從聯接派生的匿名類)
好吧,這是因為DataSource
是弱類型的。
如果將其IEnumerable<YourDataType>
為IEnumerable<YourDataType>
則應該沒問題。 但是,請注意, OrderBy
和OrderByDescending
不會在適當位置排序-您必須先對數據進行排序,然后重新分配DataSource
。
您說您的數據類型是匿名類型-恐怕您必須更改它。 匿名類型只能(輕松)以單一方法以強類型方式使用-您以后無法指定名稱,因此無法引用相同的屬性等。
不過,將匿名類型轉換為命名類型並不是很難。 這是一個給出示例的答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.