Получение запроса Linq-toSQL для отображения в GridView - PullRequest
0 голосов
/ 27 сентября 2008

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

Ответы [ 4 ]

3 голосов
/ 27 сентября 2008

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

3 голосов
/ 27 сентября 2008
gridview.DataSource = tikPart.ToList();
gridview.DataBind();
0 голосов
/ 02 февраля 2010

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

0 голосов
/ 27 сентября 2008

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

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