Удалить строки из вида сетки программно - PullRequest
1 голос
/ 31 октября 2011

У меня есть gridview, его источник данных - list<string>, и я добавил один столбец флажка, чтобы выбрать строки, которые я хочу удалить, затем я нажимаю delete.

attachdatagrid.DataSource = ConceptProperties.conceptsattachmentsfilename[mouseOverIndex].Select(x => new { FileName = x }).ToList();

проблема моя

gridview EditMode

свойства это EditOnKeystroke, и когда я написал

if ((bool)dr.Cells[0].Value != false)
                        {
                            found = true;
                            ConceptProperties.conceptsattachments[mouseeditIndex].RemoveAt(dr.Index);
                            ConceptProperties.conceptsattachmentsfilename[mouseeditIndex].RemoveAt(dr.Index);
                            attachdatagrid.Rows.RemoveAt(dr.Index);
                        }

Я получил исключение:

Строки не могут быть программно удалены, если DataGridView не привязка данных к IBindingList, который поддерживает уведомление об изменениях и позволяет удалять.

как удалить строку?

Ответы [ 2 ]

2 голосов
/ 31 октября 2011

Вам лучше привязать свою сетку к источнику привязки и выполнять все манипуляции с ней (источником привязки), а не с самим списком. Это можно сделать, перетащив компонент источника привязки в форму, а затем установив его источник данных в список, а источник данных сетки в качестве источника привязки.

IList не поддерживает уведомления об изменениях. IBindingList (который реализует источник привязки) делает.

0 голосов
/ 31 октября 2011

В вашем случае должно быть достаточно, чтобы удалить необходимые данные из списка, и, поскольку они привязаны к сетке, изменения в списке будут автоматически распространяться на элемент управления UI.

Другими словами: не звоните attachdatagrid.Rows.RemoveAt(dr.Index)

Надеюсь, это поможет.

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