2012-02-08 2 views
0

Я получаю сообщение об ошибке при удалении строк из наблюдаемого коллекционирования, связанного с datagrid в silverlight.Извлечение предметов из наблюдаемого коллекционирования, привязанного к datagrid Silverlight?

System.NullReferenceException: Ссылка на объект не указывает на экземпляр object.at на System.Collections.ObjectModel.ObservableCollection`1.RemoveItem (индекс Int32)

if (GV.orderItemList.Contains(oOrdritem)) 
    GV.orderItemList.Remove(oOrdritem); 

В первый раз я удалить запись, оборотный штраф, во второй раз, он дает выше исключение

enter image description here

пожалуйста пожалуйста, помогите

+0

Что происходит, если вы привязываетесь к ListBox, например? Сколько строк у вас есть, когда вы делаете удаление? Подозреваю, что это проблема в DataGrid ... Youi может попытаться установить DataGrid ItemsSource = null, во-первых, перевязать его ... Также кажется, что ваша строка находится в режиме редактирования, когда вы делаете удаление, попробуйте он не был в режиме редактирования –

ответ

1

Я отсортировали проблему, используя код ниже:

dgOrderItems.CommitEdit(DataGridEditingUnit.Row, true); 

Строка, которая была в данный момент сосредоточена, все еще находилась в режиме редактирования, что вызывало исключение.

1

Попробуйте использовать RemoveAt вместо Remove, это сработало для меня в некоторых случаях. Прежде всего, найти индекс де элемента с:

int index = collection.IndexOf(item); 

, то вы пытаетесь удалить:

collection.RemoveAt(index); 
+0

не работал для меня ... – sony

1

ли нулевой чек: (Или несколько, не уверен, что остальная часть кода выглядит так Я все исполнение)

if (GV != null && GV.orderItemList != null && oOrdritem != null && GV.orderItemList.Contains(oOrdritem)) 
    GV.orderItemList.Remove(oOrdritem); 
Смежные вопросы