Задать вопрос
@matros97

Datagridview фильтр по алфавиту — C#?

Доброе утро, я делаю контрольную по БД и вроде бы все нормально но возникло пару вопрос, которые не получаеться правильно сделать, скажу честно я не когда не работал с БД и C# только с PHP + MySQL, но благо MSDN есть.
У меня есть база данных, и в приложение есть кнопки которые должны отфильтровать по дате рождения и по городу я это сделал так
private void 18летToolStripMenuItem_Click(object sender, EventArgs e)
        {
 
            try
            {
                DataView dv = dt.DefaultView;
                int date = year -18;
                dv.RowFilter = String.Format("date > '{0}'", date);
                dataGridView_Main.DataSource = dv;
 
 
                
            }
 
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
 
        }

Все работает круто )) но есть проблема, мне вот эту сортировку тем кому по 18 лет надо отсортировать по алфавиту, причем пользователь толжен нажать кнопку для сортировки по алфавиту
я тоже написал код
private void аДоЯToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DataView dv = dt.DefaultView;
         
            dv.RowFilter = String.Format("year = {0}", year);
            dataGridView_Main.DataSource = dv;
            this.dataGridView_Main.Sort(this.dataGridView_Main.Columns["name"], ListSortDirection.Ascending);
 
        }

Но проблема в том что сортируется вся БД в datagridview а не то что я сортировал по возрасту.
Я решил написать метод для выборки сортировки данных через БД
вот код
//Сортировка с 1 парараметром
        public DataTable Sort(int date)
        {
 
            int rokiv = this.year - date; 
 
 
            DataTable dt = new DataTable("table");
 
            SQLiteConnection connection = new SQLiteConnection(connect_db);
 
            string sql = String.Format("SELECT id, year, number, name, date, vidil, vpo, invalde FROM '{0}' WHERE date > {1} AND year = {2}", tablename, date, year);
 
            SQLiteCommand command = new SQLiteCommand(sql, connection);
 
            connection.Open();
 
            dAdpt = new SQLiteDataAdapter(command);
 
            dAdpt.Fill(dt);
 
 
 
            connection.Close();
 
 
            return dt;
 
 
        }

и вот так я попробывал заполнить таблицу datagridview
private void до7РоківToolStripMenuItem_Click(object sender, EventArgs e)
        {
 
            try
            {
               /* DataView dv = dt.DefaultView;
                int date = year -7;
                dv.RowFilter = String.Format("date > '{0}' AND year = {1}", date, year);
                dataGridView_Main.DataSource = dv;*/
 
              dt = db.Sort(18);
 
 
 
            dataGridView_Main.DataSource = dt;
 
           
 
            DataView dv = dt.DefaultView;
            
  
            dataGridView_Main.DataSource = dv;
 
 
                
            }
 
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
 
        }

Но не чего не произошло, как был общая таблица так и есть
Может что то подскажите или поможите найти ошибку
Мне надо так что бы выборки всем кому 18 лет, пользователь мог отсортировать по алфавиту причем при нажатие на кнопку
  • Вопрос задан
  • 902 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
alex1t
@alex1t
.net developer
Чем не подходит это свойство (DataView.Sort):
https://msdn.microsoft.com/ru-ru/library/system.da...
Раз уже вы пользуетесь свойством DataView.Filter
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы