从DataGridView获取选定的行

ivo*_*der 8 c# datagridview winforms

每当用户点击"添加到购物车"按钮时,我将用户在"找到的项目"网格(屏幕截图的左侧)中选择的行添加到"项目选择"网格(屏幕截图的右侧).

截屏:链接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 );
}
Run Code Online (Sandbox Code Playgroud)

现在我没有得到如何将选定的行添加到cartList(这是一个DataGridView).

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

Sil*_*ood 25

首先,你可能想要将DataGridView的SelectionMode更改为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
}
Run Code Online (Sandbox Code Playgroud)

就个人而言,我会将bookid作为隐藏列返回,以便在您处理用户购物车时最终可用.

如果您想将项目从一个DataGridViewRow移动到另一个[以便它们一次只能存在于一个列表中],您可以执行此操作.

foreach (DataGridViewRow r in dataGridView1.SelectedRows)
{
  dataGridView1.Rows.Remove(r);
  dataGridView2.Rows.Add(r);
}
Run Code Online (Sandbox Code Playgroud)