Поиск в DataGridView совпадения или частичного совпадения - PullRequest
0 голосов
/ 09 августа 2011

Пытался просеять через гугл результаты;неудачно.То, что я пытаюсь сделать, это, учитывая некоторый текст в TextBox: найти хотя бы частичное совпадение в любом столбце моего DataGridView, и заставить элемент управления выбрать первую строку (показать ее как верхнюю строку и выделить ее)что он встречается с этим частичным соответствием.

Вот мое объявление источника данных для DataGridView и как организованы столбцы:

 var queryData = from va in xdoc.Descendants("language")
                    select new
                    {
                        StringID = va.Parent.Parent.Attribute("id").Value,
                        Language = va.Attribute("name").Value,
                        LanguageData = va.Element("value").Value,
                    };

        var organizedData = from x in queryData
                     group x by x.StringID into xg
                     select new
                     {
                         StringID = xg.Key,
                         English = xg.SingleOrDefault(x => x.Language == "ENGLISH_US").LanguageData,
                         Custom = xg.SingleOrDefault(x => x.Language == languageBox.SelectedItem.ToString()).LanguageData,
                     };

        mainView.DataSource = organizedData.ToList();

А вот текущее определение функции, котораяобрабатывает нажатие кнопки «Поиск»:

private void searchButton_Click(object sender, EventArgs e)
    {
        int currentIndex = mainView.CurrentRow.Index;

        if (searchBox.Text.Length == 0)
        {
            mainView.CurrentCell = mainView[0,0];
            mainView.Focus();
            return;
        }
    }

1 Ответ

1 голос
/ 09 августа 2011

Нечто подобное может приблизить вас:

string searchForText = "whatever";

DataGridViewRow rowFound = mainView.Rows.OfType<DataGridViewRow>()
  .FirstOrDefault(row => row.Cells.OfType<DataGridViewCell>()
      .Any(cell => ((dynamic)cell.Value).StringID.Contains(searchForText)));

if (rowFound != null) {
    mainView.Rows[rowFound.Index].Selected = true;
    mainView.FirstDisplayedScrollingRowIndex = rowFound.Index;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...