DataGridItem.DataSetIndex и реальная нумерация в DataTable
От: VictorS  
Дата: 12.07.06 07:06
Оценка:
Имеется:
— DataTable dt, некоторые строки которого помечены Deleted, Added или Modified (применять AcceptChanges до определенного момента нельзя в силу внутренней структуры приложения)
— DataGrid dg (System.Web.UI.WebControls), которому в качестве DataSource присвоен DataTable dt. В dg есть колонка с кнопочкой "удалить", которая имеет следующий обработчик:
        void dg_DeleteItem(DataGridCommandEventArgs e)
        {
            if (e.Item.ItemIndex == dg.EditItemIndex)
                dg.EditItemIndex = -1;
            if (e.Item.ItemIndex < settingsGrid.EditItemIndex)
                dg.EditItemIndex--;

            dt.Rows[e.Item.DataSetIndex].Delete();

        }

После удаления одного из элементов списка он исчезает со странички. При повторной попытке удалить тот же по счету элемент (это будет следующая за удаленной строка в dt) ни чего не происходит. Если попытаться удалить следующий по счету, то удаляется тот что стоит на месте первого удаленного. Т.е. в e.Item.DataSetIndex получается на самом деле не номер в dt, а номер в dt, если к нему применить AcceptChanges.
Отсюда вопрос: могу ли я получить реальный номер соответствующего элемента?
Re: DataGridItem.DataSetIndex и реальная нумерация в DataTab
От: VictorS  
Дата: 12.07.06 12:15
Оценка:
VS>Отсюда вопрос: могу ли я получить реальный номер соответствующего элемента?
Похоже что решение найдено. Строку:
dt.Rows[e.Item.DataSetIndex].Delete();

нужно заменить на:
dt.Select()[e.Item.DataSetIndex].Delete();
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.