繁体   English   中英

如何使用 WindowsForms 中的 DataGridView 获取选定行中的所有单元格数据?

[英]How to get all cells data in a selected row using DataGridView in WindowsForms?

我有一个 DataGridView 显示我的数据库中的一些数据,当我双击 datagridview 中的任何行时,我会在新的 window 中获取其内容。

我有这个:

 private void ListaProductos_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
 {
 var content = ListaProductos.Rows[e.RowIndex].Cells["Name"].Value.ToString();
 var abrirNuevoProducto = new modificar_producto(content ); // I want to pass data to another form
 abrirNuevoProducto.Show(); // loads the new form with data for modification
 }

这对我有用,但是......像这样一个一个地做这个会很累很乏味:

var content = ListaProductos.Rows[e.RowIndex].Cells["Name"].Value.ToString();
var content2 = ListaProductos.Rows[e.RowIndex].Cells["Age"].Value.ToString();
var conten3 = ListaProductos.Rows[e.RowIndex].Cells["Surname"].Value.ToString();
var content4 = ListaProductos.Rows[e.RowIndex].Cells["Address"].Value.ToString();
... and 150 more columns
 var abrirNuevoProducto = new modificar_producto(content, content2, content3, content4 ... and so on); // I want to pass data to another form
 abrirNuevoProducto.Show(); // loads the new form with data for modification

我会使用列表来做到这一点,但是......,我想知道是否有一种简单的方法可以做到这一点,因为我正在尝试的方式非常累和穷。 或者我应该使用列表来代替吗?

我需要将数据传递到另一个表单以进行修改操作。

如果您已经为此表定义了 class,则可以使用如下代码

var products = new List<Products>(grid.SelectedRows.Count);

for(int index = 0; index < grid.SelectedRows.Count; index++)
{
   var selectedRow = grid.SelectedRows[index];
   var product = (Products)selectedRow.DataBoundItem;

   products.Add(prduct);
}

或者如果您没有 class 定义,您可以使用动态关键字

var products = new List<dynamic>(grid.SelectedRows.Count);

for(int index = 0; index < grid.SelectedRows.Count; index++)
{
   var selectedRow = grid.SelectedRows[index];
   var product = (dynamic)selectedRow.DataBoundItem;

   products.Add(prduct);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM