У меня проблемы с этим кодом. Возвращает только первое слово в строке. Мне нужна вся строка, возвращаемая в Column
, если кто-то вводит одно или оба слова плюс только несколько символов в строке.
Поиск выполняется в TextBox
с первого DataGridView
Column
в. Это список коллекции, сохраненный в файле XML
, загруженном в DataGridView
.
Также у меня есть i++
в for (int i = 0; i < row.Cells.Count; i++)
, который утверждает, что он недоступен.
Я тоже не уверен, почему.
Это просто список привязок как коллекция.
Изображение приложения WinForms
//Search DataGridview Button
private void button3_Click(object sender, EventArgs e)
{
string searchValue = searchtextBox.Text.ToLower(); /
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
try
{
bool valueResult = false;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
for (int i = 0; i < row.Cells.Count; i++)
{
//if (row.Cells[0].Value != null && row.Cells[0].Value.ToString().ToLower().Equals(searchValue))
if (row.Cells[i].Value != null && row.Cells[i].Value.ToString().ToLower().Contains(searchValue))
{
int rowIndex = row.Index;
dataGridView1.Rows[rowIndex].Selected = true;
valueResult = true;
searchResults.Text += "=> " + searchValue + " " + Environment.NewLine.Trim();
}
break;
}
}
if (!valueResult)
{
MessageBox.Show("Unable to find " + searchtextBox.Text, "Not Found", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
return;
}
}
catch (Exception exc)box
{
MessageBox.Show(exc.Message);
}
}