поиск в datagridview C # winfom - PullRequest
       3

поиск в datagridview C # winfom

3 голосов
/ 02 июня 2011

Я хочу добавить параметр поиска в DataGridView, т. Е. Пользователь вводит строку или int в TextBox, и аналогичные записи, которые DataGridView должны выделять. Я попробовал это, используя событие KeyPress, но не сработало.

  if (Char.IsLetter(e.KeyChar))
  {
     for (int i = 0; i < (dgemployee.Rows.Count); i++)
     {
         if (dgemployee.Rows[i].Cells["Employee"].Value.ToString().
                    StartsWith(e.KeyChar.ToString(), true, 
                    CultureInfo.InvariantCulture))
         {
             dgemployee.Rows[i].Cells[0].Selected = true;
             return;                     
         }
      }

На самом деле мне нужно искать весь DataGridView, а не только один столбец и строку. Так какое-нибудь лучшее решение?

Ответы [ 3 ]

5 голосов
/ 02 июня 2011

Если ваш DataGridView привязан к DataTable или DataView, вы можете сделать это:

Создать BindingSource и сделать BindingSource.DataSource Datatable или DataView, который ваш DGV использует в настоящее время.,Затем установите DataGridView.DataSource на BindingSource.Затем вы можете использовать свойство BindingSource.Filter для запроса источника данных, установив BindingSource.Filter в строку запроса, которая будет автоматически фильтровать DGV.Синтаксис можно найти здесь - он очень похож на базовые запросы SQL, за исключением того, что вы можете использовать только подстановочные знаки в начале и конце строки.

0 голосов
/ 22 марта 2013
        private void txtsearchgroup_KeyUp(object sender, KeyEventArgs e) {
        SqlConnection objconnection = new SqlConnection(servername and ...);
        DataView Dv = new DataView();
        objcommand = new SqlCommand("select name from groupitems", objconnection);
        objdataadapter = new SqlDataAdapter();
        objdataadapter.SelectCommand = new SqlCommand();
        objdataadapter.SelectCommand = objcommand;
        objdataset = new DataSet();
        objconnection.Open();
        objdataadapter.Fill(objdataset);
        Dv.Table = objdataset.Tables[0];
        Dv.RowFilter = " name LIKE '%" + txtsearchgroup.Text + "%'";
        dataGridView1.DataSource = Dv;
        objconnection.Close(); }
  • txtsearchgroup: имя текстового поля для поискового слова в datagridview1 и
  • txtsearchgroup_KeyUp: событие keyup для поиска и фильтрации слова в datagridview1 и
  • выберите имя из групповых элементов: имя - это поле для таблицы групповых элементов и
  • Dv.Table = objdataset.Tables [0]: ноль (0) - первая таблица в наборе данных
0 голосов
/ 02 июня 2011

Используйте свойство DataView.RowFilter .

Также взгляните на DataTable.DefaultView

Посмотрите на этостатья Некоторое время назад я писал о фильтрации данных в реальном времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...