Data Grid View Sorting & Filtering

In this blog, we will code how to Filter and Sort data present in DataGrid.

The DataGridView Controls provides a flexible and customized way to display rows and columns.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Configuration;

namespace DatagridViewSortingFiltering
    public partial class Form1 : Form
        int _salary = 0;
        string _ordering = "Asc";
        public Form1()

        private void btn_Load_Click(object sender, EventArgs e)
            ///<Checking for Valid Salary Input>
            bool valid;
            valid = int.TryParse(txt_Salary.Text, out _salary);

            if (!valid)
                MessageBox.Show("Please Salary the Salary amount", "Invalid Input by User", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                _salary = Convert.ToInt16(txt_Salary.Text);
            ///</Checking for Valid Salary Input>

            //Sql Server Specific Connection String to Connect Database
            string connectionString = @"Data Source=L04WEBMET001\MSSQL2005;Initial Catalog=LGTRD;User id =LG_MssDev;Password=LG@Dev765";
            string sql = "SELECT * FROM EMP";
            //Creating SqlConnection object 
            SqlConnection conn = new SqlConnection(connectionString);
            SqlDataAdapter da = new SqlDataAdapter(sql, conn);
            DataSet ds = new DataSet();
            //Filling the DataSet using the DataAdapter Fill Method
            da.Fill(ds, "Employee");

            //Creating a DataView Object for Sorting, Filtering Operations
            DataView dv;
            dv = new DataView(ds.Tables[0], "Sal >= " + _salary.ToString(), "Sal " + _ordering, DataViewRowState.CurrentRows);
            //Binding the DataGridview dgLoadDetails 
            dgLoadDetails.DataSource = dv;

        private void btn_Exit_Click(object sender, EventArgs e)

        private void Form1_Load(object sender, EventArgs e)
            cmb_Ordering.SelectedIndex = -1;

        private void cmb_Ordering_SelectedIndexChanged(object sender, EventArgs e)
            if (cmb_Ordering.Text == "Ascending")
                _ordering = "Asc";
                _ordering = "Desc";

The int.TryParse method provides a good approach to validate Input.

The TryParse method first tries to convert the string Input to Integer and returns a Boolean (true/false)

If the boolean value results to false the Input is Invalid i.e., It cannot convert the string Input to Integer Here (int.TryParse)
If resulting in true the Input is a valid one.

Thanks for Reading.