C # Получает строки из DataGridView

#c# #winforms #datagridview

#c# #winforms #datagridview

Вопрос:

Мне нужно получить все строки в DataGridView в функции foreach. Как я могу это сделать?

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

Это на c#

Спасибо, Кристиан

Комментарии:

1. Гораздо лучше получить доступ к источнику данных, к которому привязана сетка.

2. Он не привязан к одному. Предполагается, что он должен быть заполнен пользователем.

3. Т.е. я помещаю представление datagrid в форму Windows и разрешаю пользователю создавать значения, а затем получать из него данные.

4. Очень редко хорошая идея. Сетка — это элемент управления для представления данных, а не контейнер для хранения данных. Это можно сделать, но это не значит, что это хорошая идея.

Ответ №1:

Я думаю, что лучший способ доступа к этим данным — либо через Data Source :

 dataGridView.DataSource = someData;
someData.property;
  

ИЛИ, если пользователь вводит данные на странице, вы можете получить доступ с помощью FindControl метода:

 name = ((TextBox)dataGridView.Rows[e.RowIndex].FindControl("name")).Text;
  

В этом случае, если вы вызвали событие для определенной строки, оно вернется EventArgs e с определенным RowIndex значением. Затем вы можете получить доступ к значениям столбца через ControlID внутри столбца, например, <asp:TextBox id="name" runat="server" /> из .FindControl("name") .

Важно помнить, что вы должны привести этот объект обратно к типу, которым он должен быть из .FindControl() метода.

Ответ №2:

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

Ответ №3:

 foreach(DataGridViewRow row in dataGridView.Rows)
{
     //Your code here
}
  

Комментарии:

1. Я знаю это. Как я могу получить данные из столбцов 1 и 2 из этого? Строки.