Назад
Создание прибыльного бизнеспроекта на базе сайта

SEO + ASP.NET 4.0 + БИЗНЕСМОДЕЛЬ = ПРИБЫЛЬНЫЙ САЙТ

Инструмент быстрого построения прибыльного онлайн бизнеса своими силами без капиталовложений за 4 месяца все подробности на SEO + ASP.NET 4.0.

Подписка на рассылку

МАГИЯ C#!

Создание вебсайта с формой автоматического приема онлайн платежей по WebMoney!
Ваше имя
Ваш e-mail
Уроки по ASP.NET c# ADO.NET
     

18 видеоуроков
более 5 часов
по созданию сайта,
выполняющего
продажи ваших продуктов (физических/электронных) на полном автомате с личным оповещением на e-mail, а также ...
DVD-курс по C#, .NET

3 часть. Введение в ASP.NET. WebServices Профессиональная подготовка разработчика по языку C# на платформе .NET

asp.net webservices dvd c# gridview Гудок курс Более 65 подробных видео уроков по теоретическим основам технологии сайтостроения ASP.NET и процессу создания и использованию вебсервисов.

DVD-курс по C#, .NET

2А часть. XML/TXT в аспекте ADO.NET Профессиональная подготовка разработчика по языку C# на платформе .NET

xml txt dvd c# ADO ADO.NET Гудок курс 70 подробных видео уроков по работе с форматами xml, txt, по работе с файлами и директориями. Разработка высокоорганизованных свойств для значительного сокращения объема исходного кода и облегчения дальнейшей модификации и многое-многое другое...

DVD-курс по C#, .NET

1 часть. Windows Forms Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок

185 подробнейших уроков (70 часов) лекций в формате видеоуроков по теории языка c# и платформы .NET. Практическое закрепление теоретического материала на примере создания Windows Forms - приложения видеоигры "Tanks"

DVD-курс по C#, .NET

2 часть. ADO.NET/SQL Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок ADO.NET sql

165 подробных видео уроков по созданию приложений распределенных баз данных на примере разработки проектов с использований технологий ADO.NET (Connected model, Disconnected model, Typed DataSet, ...)


Я записываю курсы!
  Курс валют

НБУ курс евро






c# - Поиск ячеек/строк по DataGridView



Достаточно часто необходимо произвести поиск по значению определенной ячейки в DataGridView. Обычно это дело сводится к поиску по связанному объекту DataTable. Но сегодня мы поговорим именно о поиске в самом контроле DataGridView.

Имеется следующая форма:

Поиск в по DataGridView GridView

На ней размещены myDataGridView с привязкой к myDataTable, myTextBox и myButton.

Текстовое поле принимает искомое значение для столбца Name, кнопка выполняет поиск и выделяет первую найденную строку, которая соответствует критерию поиска.

Обработчик события следующий:

private void myButton_Click(object sender, EventArgs e)
{
    string selectString = 
        "Name Like '%" + myTextBox.Text.Trim() + "%'";
    
    DataRowCollection allRows = 
        ((DataTable)myDataGridView.DataSource).Rows;
    
    DataRow[] searchedRows = 
        ((DataTable)myDataGridView.DataSource).
            Select(selectString);

    int rowIndex = allRows.IndexOf(searchedRows[0]);
    
    myDataGridView.CurrentCell = 
        myDataGridView[0,rowIndex];
}

Сначала определяем фильтр selectString. Затем получаем все строки из источника данных. Потом, с помощью метода Select, среди них находим те, что удовлетворяют условию. Затем, в полученном масиве выбираем первый элемент-строку и получаем для неё индекс, под которым данная строка размещена в myDataTable. Последняя операция назначает текущую ячейку в myDataGridView используя полученный индекс.

Почти вся работа велась на контроле DataTable. Вы скажете, а как же поиск по самому DataGridView? Да, поиск выполнялся по источнику привязки, но результат этой работы отображается в виде динамического назначения текущей ячейки в DataGridView.

Если все таки необходимо «бегать» по гриду, тогда вот приемлемый вариант:

private void myButton_Click(object sender, EventArgs e)
{
    for (int i=0; i < myDataGridView.RowCount; i++)
    if (myDataGridView[1, i].FormattedValue.ToString().
        Contains(myTextBox.Text.Trim()))
    {
        myDataGridView.CurrentCell = myDataGridView[0, i];
        return;
    }
}

Но в этом случае также будет выводится только первая найденная строка.

Что бы дать возможность перемещаться по найденным строкам, введите переменную уровня класса, к примеру i, а в цикле выполните маленькие изменения:

int i;

private void myButton_Click(object sender, EventArgs e)
{
    for (; i < myDataGridView.RowCount;)
    if (myDataGridView [1, i].FormattedValue.ToString().
        Contains(myTextBox.Text.Trim()))
    {
        myDataGridView.CurrentCell = myDataGridView[0, i];
        if (i < myDataGridView.RowCount-1)
            i++;
        else
            i = 0;
        return;
    }
    
}

Обращаю ваше внимание, что если для элемента DataGridView установлена возможность добавлять строки, то в условии if (i < myDataGridView.RowCount-1) следует единичку заменить на двойку, что б не учитывать последнюю пустую строку вставки новых данных: if (i < myDataGridView.RowCount-2)



Больше информации читайте по теме:

Вывод в названия колонок DataGridView сторонние значения (не из свойства ColumnName) с помощью c#
Объект CurrencyManager – получение текущей (активной) строки в DataGridView на C#
Автоматическое слежение активной ячейки в DataGridView за перемещением курсора мыши на c#
Получение текущей ячейки в DataGridView при вызове контекстного меню на c#
Значения по умолчанию новой строки DataGridView
Привязка (заполнение) элементов ListBox объектом SqlDataReader
Чтение (выборка) из БД Sql-Server двоичных данных (графического изображения)
Запись (занесение) изображения в БД SQL Server
Добавление и редактирование данных в типизированные DataTable
Импорт csv-данных в DataSet
Импорт sql-данных в формат .csv



Оценить статью:

Оценивая статью, Вы подсказываете нам насколько данная информация стала полезной именно для Вас. Мы ожидаем, прежде всего, оценку доступности материала для понимания и простоты его изложения. Дополнительные комментари, вопросы, дополнения и замечания Вы можете указать на странице От Вас

Частичное, или полное копирование материала данной статьи возможно лишь при размещении ссылки на данную страницу.


            
        


        Great_Beaver    02.11.2010 16:01:55
        

Этот код вгоняет в бесконечный цикл, так как если первая же запись не совпала то i++ не происходит и цикл висит.




Имя:  


Текст комментариев (не больше 600 знаков):  
введите не более 600 знаков



Введите символы с картинки:
Капча имеет "срок годности". Поэтому, если необходимо обновите страницу.



Сантехник срочно
c# курс Гудок   курс по ASP.NET Гудок   курс по ADO.NET Гудок   курс по XML txt Гудок   курс по рефлексии и многопоточности Гудок