c# - 从 DataGridView 中获取选定的行

标签 c# winforms datagridview

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

屏幕截图:link 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.
}

最佳答案

首先,您可能希望将 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
}

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

如果您想将项从一个 DataGridViewRow 移动到另一个 [以便它们一次只能存在于一个列表中],您可以这样做。

foreach (DataGridViewRow r in dataGridView1.SelectedRows)
{
  dataGridView1.Rows.Remove(r);
  dataGridView2.Rows.Add(r);
}

关于c# - 从 DataGridView 中获取选定的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5280655/

相关文章:

c# - 如何将值插入 DataGridView 单元格?

c# - 在 C# 中为 dataGridView 单元格提供背景图像

c# - 对对象中的引用感到困惑

c# - Dapper 异常 - Get<T> 仅支持具有 [Key] 属性的实体,但已定义 [key]

c# - HttpClient.GetAsync 一次只执行 2 个请求?

c# - 使用 WebView2 编辑 HTTP 请求 header

c# - 如何使用枚举填充组合框 - 在组合框中显示枚举的整数(值)

c# - 如何在不下载所有页面源的情况下始终获取网站标题

c# - 没有行时在DataGridView中显示文本

C#:如何对整数进行四舍五入的简单数学运算?