Как получить данные всех ячеек в выбранной строке с помощью DataGridView в WindowsForms? - PullRequest
0 голосов
/ 02 августа 2020

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

У меня это:

 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

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

Мне нужно передать данные в другую форму для операций модификации.

1 Ответ

1 голос
/ 02 августа 2020

Если у вас уже есть класс, определенный для этой таблицы, вы можете использовать код, как показано ниже

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);
}

, или, если у вас нет определения класса, вы можете использовать динамическое c ключевое слово

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);
}
...