Невозможно редактировать значения DataGridView, привязанного к BindingList - PullRequest
2 голосов
/ 01 мая 2010

У меня проблемы с редактированием списка привязки данных. Позвольте мне проиллюстрировать это следующим:

Скажем, у меня есть класс Person:

public Class Person{
  private string m_firstname;
  private string m_lastname;
  public string FirstName{get;set;}
  public string LastName{get;set;}
  public Person{ ... }
}

У меня есть содержащий класс, который называется Population:

public class Population{
  private BindingList<Person> m_lstPerson = new BindingList<Person>();
  private string m_countryName;
  public BindingList<Person> ListPerson{get; set;}
  public string CountryName { get; set; }
}

Затем у меня на одной форме первое сетевое представление с DataSource = m_lstPopulation (BindingList). При работе с объектами Population привязка работает как шарм. Когда я дважды щелкаю, открывается диалоговое окно с информацией об объекте. Одна вкладка в деталях содержит представление данных, привязанное к ListPerson этого населения.

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

Чего мне не хватает? Похоже, что на объекте Population была установлена ​​блокировка, поэтому его внутренние поля нельзя редактировать ...

Пожалуйста, сообщите. Спасибо.

1 Ответ

1 голос
/ 05 мая 2010

Сначала убедитесь, что установлены следующие свойства сетки:

ReadOnly = false; AllowUserToAddRow = true; EditMode =;

Если это не сработает, возможно, вы застряли в режиме редактирования ... Похоже, у вас есть какое-то нестандартное поведение в вашей сетке («Когда я дважды щелкаю, открывается диалоговое окно с информацией об объекте. «) ...

Для этого попробуйте вызвать DataGridView.CancelEdit () после закрытия диалогового окна, чтобы завершить сеанс редактирования в выбранной строке. Это восстановит строку «новый ряд» в сетке. Он исчезает, когда вы начинаете редактирование другой строки, которая, в зависимости от настройки EditMode, может начаться при нажатии (вводе) другой строки.

...