ASP.net gridview сортировка с результатом linq - PullRequest
0 голосов
/ 10 июня 2009

до сих пор у меня есть запрос linq, который идеально заполняет сетку данных условиями фильтра. однако, когда я пытаюсь реализовать сортировку, я терплю неудачу.

У меня есть следующий код. ловит начало сортировки.

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

в этих подметодах я бы хотел сортировать каждое возможное выражение сортировки. однако, когда я пытаюсь использовать данные, которые уже находятся в сетке, это не позволит мне связать их с порядком

private void SortDataAsc(string p)
{
    var data = gvServers.DataSource;
    switch (p)
    {
        case "domain":
            var sorted = data.nothinghappenshere
        default:
            break;
    }
}

как вы можете видеть, указывая на ничто, здесь я не могу отсортировать данные (вероятно, потому что это переменная).

Что я прочитал в Интернете, так это то, что вы можете просто получить данные из таблицы, как я пытаюсь это сделать в SortDataAsc (), но, похоже, это не сработает.

Я просто хочу упорядочить по определенному полю в моем наборе результатов (который в данном случае является анонимным классом, полученным из объединения)

1 Ответ

1 голос
/ 10 июня 2009

Ну, это потому, что DataSource слабо напечатано.

Если вы приведете его к IEnumerable<YourDataType>, все будет хорошо. Однако обратите внимание, что OrderBy и OrderByDescending не сортируются на месте - вам придется упорядочить данные, а затем переназначить DataSource.

Вы говорите, что ваш тип данных как анонимный, боюсь, вам придется это изменить. Анонимные типы могут (легко) использоваться строго типизированным способом в одном методе - вы не можете указать имя позже, поэтому вы не можете ссылаться на те же свойства и т. Д.

Хотя не очень сложно преобразовать анонимный тип в именованный. Вот ответ, содержащий пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...