После загрузки таблицы в datagridview я создаю элементы combobox из заголовков столбцов datagrid. Из combobox я выбираю столбец, и у меня есть текстовое поле для значения поиска, заданного пользователем. Я использую следующий код:
string searchForText = txtCrudSearch.Text;
dgvLoadTable.ClearSelection();
dgvLoadTable.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
try
{
foreach (DataGridViewRow row in dgvLoadTable.Rows)
{
if (row.Cells[cboCrudSearchColumn.SelectedIndex].Value.ToString().Equals(searchForText))
{
row.Selected = true;
//if I use break here the code doesn't give exception
//but highlights only one row. I want to return all rows that
// match with the search string
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Теперь проблемы:
Любая помощь будет оценена, спасибо.
Я понял. В случае, если кто-то нуждается в решении, код выглядит следующим образом:
private void btnCrudSearch_Click(object sender, EventArgs e)
{
dgvLoadTable.CurrentCell = null;
dgvLoadTable.AllowUserToAddRows = false;
dgvLoadTable.ClearSelection();
dgvLoadTable.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dgvLoadTable.ReadOnly = true;
try
{
foreach (DataGridViewRow row in dgvLoadTable.Rows)
{
var cellValue = row.Cells[cboCrudSearchColumn.SelectedIndex].Value;
if (cellValue != null && cellValue.ToString() == txtCrudSearch.Text.ToUpper())
{
row.Selected = true;
row.Visible = true;
}
else
row.Visible = false;
}
}
catch (Exception exc)
{
MessageBox.Show(exc.Message);
}
}