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

StackOverflow https://stackoverflow.com/questions/143194

  •  02-07-2019
  •  | 
  •  

Вопрос

У меня есть довольно сложный запрос 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?Спасибо!

Это было полезно?

Решение

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

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

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

@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, чтобы каждое свойство в вашем возвращаемом объекте было преобразовано в столбец, либо вы можете написать столбцы с помощью конструктора и настроить там правила привязки.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top