BindingList для DTO, которые поддерживают удаленное состояние объекта - PullRequest
3 голосов
/ 30 июня 2010

У меня есть BindingList для DTO, который может привязываться непосредственно к элементу управления окнами, и проблема возникла, когда пользователь захотел удалить строку в моем представлении данных.

В этой ситуации удаленный объект (строка) исчезает, и когда этот DTO BindingList возвращается на сервер для обновления, я не знаю, какую строку удалить.

Может ли BindingList иметь коллекцию для удаленных объектов по умолчанию, или я должен реализовать ее вручную, или есть другой вариант для моей ситуации?

Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 30 июня 2010

BindingList имеет событие ListChanged, которое возникает при изменении списка.Вам необходимо написать код, который обрабатывает это событие и отслеживает, какие элементы в списке были удалены.

http://msdn.microsoft.com/en-us/library/ms132742.aspx

Другой вариант - отслеживать удаления, происходящие в DataGridView.

0 голосов
/ 30 июня 2010

По-моему, получать данные вручную с помощью LinQ. Создайте таблицу данных для результата, например

DataTable dt = new DataTable();

        dt.Columns.Add("Want to Delete?",typeof(bool));
        dt.Columns.Add("Data Id", typeof(string));
        dt.Columns.Add("Data 1", typeof(string));
        dt.AcceptChanges();

        return dt;

затем создайте строки для вашего результата, как.

в цикле foreach (в результате var myResult)

object[] row = new object[]
        {
        false,
        result.Id,
        result.Data1
        };
        dt.Rows.Add(row);

Позволяет пользователю выбирать строки для удаления, пользователь может проверить первый столбец. Потому что это bool (checkBox) и после удаления нажатия кнопки обработать выбранные строки

foreach (DataRow dr in yourDataTable.Rows)
        {
            if (Convert.ToBoolean(dr[0])) // goes in if its checked
            {
                // delete dr[0]
            }
        }

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

...