2009-12-02 3 views
0

Я не могу найти способ выполнить полный текстовый поиск по привязке данных DataGridView по всему дыханию своих столбцов и строк.Полнотекстовый поиск по связанному элементу управления DataGridView

Объекты DataTable и DataView, похоже, заставляют меня искать определенные столбцы либо через Select(), Find(), либо FindRows(). То же самое с элементом управления DataGridView.

У меня есть одна строка поиска, и мне нужно запустить ее против всего содержимого DataGridView. Я уверен, что ответ лежит где-то рядом. Но я не могу найти его на этом этапе в моем обучении C# и .Net framework.


Это мое текущее решение, которое я хотел бы избежать:

/*...*/ 

for (int i = found_last_row + 1; i < dataGridRes.Rows.Count; ++i) 
{ 
    for (int j = 0; j < dataGridRes.Columns.Count; j++) 
    { 
     if(dataGridRes.Rows[i].Cells[j].Value.ToString().Contains(search_last_str.)) 
     { 
      dataGridRes.Rows[i].Selected = true; 
      dataGridRes.FirstDisplayedScrollingRowIndex = i; 

      found_last_row = i; 
      break; 
     } 
    } 
} 

/* ...*/ 
+0

Вы пытаетесь найти строку/ячейку/объект, содержащий текст поиска? – jheddings

+0

Просто нужна строка. В настоящее время я делаю это с помощью cascaded for(). Угадающего решения, которого я надеялся, можно было избежать. Производительность вполне приемлема. Но я надеялся, что смогу оптимизировать код. –

ответ

0

Я думаю, что общий подход для поиска исходных данных (не сетки), а затем повторно связать только шоу матчей. Если вы используете пейджинг, сетка вытаскивает страницу данных за страницей из базы данных, поэтому вы будете искать только страницу, которую вы сейчас видите.

+0

Да. Это было бы возможным решением. Но поиск объектов DataTable или DataView заставляет меня искать определенные столбцы, чего я не хочу делать. Мне не нужно переустанавливать, поскольку я только хочу найти и выбрать строку, а не фильтровать их. –

Смежные вопросы