簡體   English   中英

ASP.net GridView與LINQ結果排序

[英]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>則應該沒問題。 但是,請注意, OrderByOrderByDescending不會在適當位置排序-您必須先對數據進行排序,然后重新分配DataSource

您說您的數據類型是匿名類型-恐怕您必須更改它。 匿名類型只能(輕松)以單一方法以強類型方式使用-您以后無法指定名稱,因此無法引用相同的屬性等。

不過,將匿名類型轉換為命名類型並不是很難。 這是一個給出示例的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM