lalaou Ответов: 2

скопируйте выбранные данные из datagrid в другую с помощью кнопки


Привет, ребята!

У меня есть форма, которая имеет две сетки данных.я хочу с помощью кнопки скопировать выбранные строки
от одного к другому.
Я нахожу этот код :
private void button1_Click(object sender, EventArgs e)
       {

           foreach (DataGridViewRow row in this.table1DataGridView.SelectedRows)
           {
               object[] rowData = new object[row.Cells.Count];
               for (int i = 0; i < rowData.Length; ++i)
               {
                   rowData[i] = row.Cells[i].Value;
               }
               this.copyDataGridView.Rows.Add(rowData);
           }
       }

но это исключение:

Дополнительная информация: строки не могут быть программно добавлены в коллекцию строк DataGridView, если элемент управления привязан к данным.

2 Ответов

Рейтинг:
16

Reza Ahmadi

Привет,
Я создал для вас образец, который очень прост, но отлично работает:

private void button1_Click(object sender, EventArgs e)
      {
          List<object> destList= new List<object>();
          foreach (DataGridViewRow row in dataGridView1.SelectedRows)
              destList.Add(row.DataBoundItem);
          dataGridView2.DataSource = destList;
      } 


источник данных dataGridView1 - это набор данных, привязанный к базе данных.

Овации.


lalaou

Большое спасибо!!!!
спасибо, спасибо, спасибо! :)

Reza Ahmadi

Добро пожаловать!

lalaou

Еще раз привет! я запускаю код и понимаю, что могу скопировать только одну строку. если я попытаюсь сделать это во второй раз это заменит первую копию не могли бы вы показать мне способ чтобы я мог сохранить более одной копии

Reza Ahmadi

На самом деле ваш вопрос не очень ясен. Однако, если вы хотите сохранить более одной копии, вы можете использовать словарь<string,list&lt;object>. 'string' - это ваш ключ, который используется для поиска конкретного списка< object>, который может быть привязан к целевой сетке.]
Овации

Рейтинг:
0

Reza Ahmadi

Привет,
Как видно из сообщения об исключении, в целевой DataGrid вам нужно очистить теги привязки данных, так как вы хотите добавить строки программно.

Овации


Reza Ahmadi

Привет,
Моя точка зрения состоит в том, чтобы определить пустую сетку как вашу целевую сетку. Затем в соответствии с выбранными строками(Я предполагаю, что вы можете найти ключи записи из выбранных строк) вы фильтруете свой основной источник данных. Затем вы свяжете новые отфильтрованные данные с целевой сеткой.

Я надеюсь, что это поможет,
Овации.

lalaou

у меня есть пустая сетка в качестве пункта назначения...
можете ли вы сказать мне, что не так в коде, который я опубликовал, или вы можете показать правильный?
я ценю вашу помощь!