Если я не ошибаюсь, обычный System.Collections.Generi c .List не будет поддерживать редактирование при прямой привязке, поскольку он не реализует IBindingList (или необходимое событие ListChanged) для двустороннего связывания данных. Скорее всего, вам нужно будет обернуть список в BindingList, чтобы редактировать значения. Это невозможно при использовании анонимного типа.
Сначала создайте класс для хранения элементов списка:
public Class Order {
public int OrderID { get; set; }
public string Name { get; set; }
public byte Quality { get; set; }
public string Description { get; set; }
}
Затем в своем запросе
select new Order
{
OrderId = m.MedId,
Name = m. Name,
Quality = m.Quality,
Description = d.Description
}
Теперь переместите его в BindingList:
if (myOrder != null) {
BindingList<Order> myBindingList = New BindingList<Order>(myOrder);
dgvOrder.DataSource = myBindingList;
}
Я бы также рекомендовал обернуть BindingList в BindingSource, что избавит вас от необходимости обрабатывать строки, добавляемые / удаляемые вручную:
if (myOrder != null) {
BindingList<Order> myBindingList = New BindingList<Order>(myOrder);
BindingSource myBindingSource = New BindingSource(myBindingList);
dgvOrder.DataSource = myBindingSource;
}
Извиняюсь, если мой синтаксис немного нарушен, я в основном использовал vb в последнее время.
РЕДАКТИРОВАТЬ: я пропустил, что BindingList не реализует IContainer, поэтому приведенный выше код для привязки к BindingSource не будет работать, потому что однопараметрический конструктор для BindingSource специально принимает IContainer. Если вы все еще хотите использовать BindingSource, вместо этого следует использовать третий конструктор BindingSource, например:
BindingSource myBindingSource = New BindingSource(myBindingList, Nothing);
BindingSource принимает привязку к IBindingList, но только с помощью этого конструктора или путем прямой установки свойства .DataSource после использования параметров конструктор Оставив вышеприведенный ошибочный код, чтобы другие, кто прочитал комментарий ОП, поняли, на что ссылались.