Непонятно, какова ваша точная проблема с маленьким кодом, который вы показываете, но из вашего заявления всякий раз, когда я снимаю выделение с записи в csv_datagridview
и снова нажимаю кнопку, он очищает этот выбор. Я предполагаю, что если ничего не выбрано, данные в optimaldataGridView
стираются, когда вы нажимаете кнопку «Добавить выбранную».
Предполагаю, что csv_datagridview
привязан к столу. Ваш опубликованный код показывает создание нового списка destList
, который вы заполняете выбранными строками из csv_datagridview
. Затем вы устанавливаете источник данных optimaldataGridView
на номер destList
. Одна из проблем, которые я вижу на этой картинке, заключается в том, что как только вы покинете пункт if (selectedRowCount <= 9)
... destList
больше не будет существовать. Как источник данных для DataGridView в вашей форме, я бы подумал, что вы хотите сохранить этот список глобальным до тех пор, пока форма открыта. В любом случае ... вы не добавляете выбранные строки, вы просто удаляете существующие строки, а затем добавляете то, что было выбрано в csv_datagridview
.
Надеюсь, код ниже поможет. Я создал два DataTables, по одному для каждого DataGridView. Таблица данных csv_datagridview
заполняется некоторыми данными, вторая таблица данных остается пустой. Затем просто добавьте выбранные строки из csv_datagridview
в DataTable optimaldataGridView
... Затем обновите optimaldataGridView
.
DataTable table1;
DataTable table2;
public Form1() {
InitializeComponent();
csv_datagridview.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
optimaldataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
table1 = GetTable("table1");
table2 = GetTable("table2");
FillTable(table1);
csv_datagridview.DataSource = table1;
optimaldataGridView.DataSource = table2;
}
private void button1_Click(object sender, EventArgs e) {
if (csv_datagridview.SelectedRows.Count > 0) {
foreach (DataGridViewRow row in csv_datagridview.SelectedRows) {
DataRowView dr = (DataRowView)row.DataBoundItem;
table2.Rows.Add(dr.Row.ItemArray[0], dr.Row.ItemArray[1], dr.Row.ItemArray[2]);
}
optimaldataGridView.Refresh();
}
}
private DataTable GetTable(string name) {
DataTable table = new DataTable(name);
table.Columns.Add("col1");
table.Columns.Add("col2");
table.Columns.Add("col3");
return table;
}
private void FillTable(DataTable table) {
for (int i = 0; i < 10; i++) {
table.Rows.Add("R" + i + "C0", "R" + i + "C1", "R" + i + "C2");
}
}
Надеюсь, это поможет.
Вам нужно объявить destList как свойство класса, а не внутри метода. Каждый раз, когда вы устанавливаете его значение в новый список