Когда меняю местами столбцы в datagridview данные не сохраняются!

Windows Forms. Есть Datagridview. В него можно загружать таблицу Excel. После загрузки можно удалить столбец, удалить строку и поменять место колонки. После изменения места колонки - она не меняется в данных, а только визуально. Как это пофиксить?


Ответы (2 шт):

Автор решения: yava43DEVELOPER

Не нужно что то там сохранять или выдумывать какие-то прокси. Если вам необходимо достать данные из УЖЕ измененной и отредактированной таблицы DGV. то это можно сделать через DisplayIndex.

var data = datagridview1[datagridview1.Columns["индекс нужной колонки"].DisplayIndex, "индекс нужной строки"].Value.ToString();
→ Ссылка
Автор решения: yava43DEVELOPER

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

DataGridViewColumnCollection columnCollection = dataGridView1.Columns;
DataGridViewColumn one = columnCollection.GetFirstColumn(DataGridViewElementStates.Visible);
DataGridViewColumn two = columnCollection.GetNextColumn(one, DataGridViewElementStates.Visible, DataGridViewElementStates.None);
DataGridViewColumn three = columnCollection.GetNextColumn(two, DataGridViewElementStates.Visible, DataGridViewElementStates.None);
DataGridViewColumn four = columnCollection.GetNextColumn(three, DataGridViewElementStates.Visible, DataGridViewElementStates.None);

// Только сейчас можно с уверенностью получить данные из нужной ячейки вот так:

data = dataGridView1[one.Index, i].Value.ToString(),
→ Ссылка