Получение запроса Linq-toSQL для отображения в GridView

У меня довольно сложный запрос Linq, который я не могу попасть в LinqDataSsource для использования в GridView:

IEnumerable<ticket> tikPart = (
    from p in db.comments where 
        p.submitter == me.id && 
        p.ticket.closed == DateTime.Parse("1/1/2001") && 
        p.ticket.originating_group != me.sub_unit 
    select p.ticket
    ).Distinct();

Как я могу получить это в GridView? Спасибо!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
4 124
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

gridview.DataSource = tikPart.ToList();
gridview.DataBind();

Вау ... это так просто, когда я это вижу. Есть ли способ получить это в DataSource, чтобы я мог использовать сортировку GridVIew?

naspinski 27.09.2008 11:52

Вы можете использовать источник данных объекта и привязать его к методу, который возвращает этот запрос. Я никогда не использую LinqDatasource, поэтому не могу там помочь

mattlant 27.09.2008 11:54

При выполнении упомянутого мною метода вы должны сами выполнять сортировку и подкачку страниц. Возможно, было бы проще использовать предложенное выше предложение matts с LinqDataSource.

leppie 27.09.2008 12:04

Если вам нужна сортировка и разбивка по страницам LinqToSqlDataSource или ObjectDataSource - лучшие способы, в противном случае вам придется использовать генерацию выражений на лету, что может стать некрасивым (как выяснил мой босс!)

Aaron Powell 27.09.2008 12:06
Ответ принят как подходящий

Вы можете настроить Gridview без источника данных. Настройте столбцы gridview и в программном обеспечении привяжите этот результат к представлению сетки.

Спасибо за вклад! У вас есть какой-нибудь пример, где я мог бы это увидеть? Я понимаю концепцию, но пример поможет ...

naspinski 27.09.2008 12:18

Это довольно просто. Создайте класс с таким методом, как GetData (). Добавьте источник данных объекта на свою страницу. используйте смарт-тег для его настройки, и вам понадобится только запрос выбора при отображении данных. Итак, настройте это для вызова только что созданного вами метода классов.

mattlant 27.09.2008 12:23

@leppie - Нет необходимости вызывать ToList () в IQueryable при его присоединении в качестве источника данных.

Если ваш DataContext не был удален до вызова метода DataBind, ToList является избыточным вызовом.

По умолчанию DataContext использует отложенную загрузку, так что данные извлекаются из базы данных только при перечислении IQueryable. ToList () выполняет перечисление и вызывает вызов, так же как и DataBind ().

Итак, вы можете сделать что-то вроде этого:

using(MyDataContext ctx = new MyDataContext(){
  this.MyGridView.DataSource = from something in ctx.Somethings where something.SomeProperty == someValue select something;
  this.MyGridView.DataBind();
}

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

Затем вы можете либо использовать автоматически сгенерированные столбцы в GridView, чтобы каждое свойство в возвращаемом объекте было преобразовано в столбец, либо вы можете написать столбцы с дизайнером и настроить там правила привязки.

Спасибо за дополнительную информацию. У меня все еще было впечатление, что для свойства DataSource нужен IList :)

leppie 27.09.2008 12:07

leppie - Вам нужно только убедиться, что в вашем источнике данных реализован IEnumerable. Если вы проверите, что реализует IList и IQueryable, вы сможете отследить все это вплоть до IEnumerable :)

Aaron Powell 27.09.2008 13:00

Вы можете привязать тип IQueryable <> к GridView с помощью элемента управления LinqDataSource. http://johnsobrepena.blogspot.com/2010/01/data-bind-coolgridview-to-iqueryable.html

Другие вопросы по теме