#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 из этого? Строки.