DataGridView не может заполнить объект LINQ to SQL - PullRequest
1 голос
/ 01 декабря 2011

Я пытаюсь заполнить DataGridView в моем WinForms приложении (dgvOrderSizes), используя приведенный ниже код.Как отмечено в коде, если я присваиваю cod своему DataGridView, он заполняется нормально, но когда я пытаюсь присвоить orderDetails, он не заполняется.Я попытался отладить код и обнаружил, что свойство DataSource назначено правильно, поэтому мне интересно, почему сетка не заполняется?(Нет исключений)

    protected void ShowOrderDetails(int orderNo)
    {

        this.dgvOrderSizes.DataSource = null;

        var cod = from orderDetail in db.OrderDetails
                                 where orderDetail.OrderNo == orderNo
                                 select orderDetail;

        //this.dgvOrderSizes.DataSource = cod;        //works until here


        var orderDetails = from pOrder in cod.AsEnumerable()
                                 select new { pOrder.Plies, pOrder.Composition, pOrder.Size, pOrder.UnitName, pOrder.Quantity, pOrder.Rate, pOrder.ProductionUnitName, pOrder.DeliveryUnitName };

        this.dgvOrderSizes.DataSource = orderDetails;       //doesn't work
    }

1 Ответ

1 голос
/ 01 декабря 2011

DataGridView использует довольно удивительное количество API, включая IListSource, IList, ITypedList, IBindingList, IBindingListView и большую часть CompnentModel (включая все дескрипторы), а также множество других. Если вы говорите, что он работает с «cod», то, по-видимому, LINQ-to-SQL предоставляет хотя бы один из этих API, а LINQ-to-Objects - нет (это нормально; в этом нет необходимости).

Просто вызовите ToList () и все будет работать:

blah.DataSource = orderDetails.ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...