Получить выбранные строки из DataGridView - PullRequest
8 голосов
/ 12 марта 2011

Я добавляю те строки, которые выбраны пользователем в сетке «Найденные товары» (левая сторона снимка экрана), к сетке «Выбранные предметы» (правая сторона снимка экрана) всякий раз, когда пользователь нажимает «Добавить в корзину» кнопка.

Снимок экрана: ссылка http://img856.imageshack.us/img856/3015/datagridview.jpg.

Кнопка «Поиск» выводит список книг из службы поиска. Который я отображаю в itemsFoundList, который является DataGridView.

private void searchButton_Click( object sender, EventArgs e )
{
    itemsFoundList.Columns.Clear ();
    string[] list = searchServiceClient.BookSearch ( getBookName.Text, getAuthorName.Text );
    itemsFoundList.Columns.Add ( "Items", "Items found:" );
    displayToGrid ( itemsFoundList, list );
}

Теперь я не понимаю, как добавить выбранные строки в cartList (который является DataGridView).

private void addToCart_Click( object sender, EventArgs e ) {
    //I am not getting what to write here.
}

1 Ответ

25 голосов
/ 12 марта 2011

Сначала вы, вероятно, захотите изменить SelectionMode вашего DataGridView на FullRowSelect. В противном случае пользователи, скорее всего, будут выбирать ячейки, а не строки, и приведенный ниже код не будет работать. [Хотя вы можете сделать что-то подобное с Selected Cells]

Тогда вам нужно начать с кода, подобного следующему:

foreach (DataGridViewRow r in dataGridView1.SelectedRows)
{
   //Code to add selected row to new datagrid.
   //Important to note that dataGridView2.Rows.Add(r) will not work 
   //because each row can only belong to one data grid.  You'll have 
   //to create a new Row with the same info for an exact copy
}

Лично я бы вернул bookid в виде скрытого столбца, чтобы он был доступен для обработки корзины пользователя.

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

foreach (DataGridViewRow r in dataGridView1.SelectedRows)
{
  dataGridView1.Rows.Remove(r);
  dataGridView2.Rows.Add(r);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...