Sử dụng DefaultView và Row RowFilter DataTable trong C#

Sử dụng DefaultView và Row RowFilter DataTable trong C#


namespace DemoDataTable
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        DataTable dtData = new DataTable();

        private void Form1_Load(object sender, EventArgs e)
        {
            KhoiTaoCauTruc();
            loadData();
        }
        private void KhoiTaoCauTruc()
        {
            // Khoi tao cau truc DataTable
            dtData.Columns.Add("TT", typeof(int));
            dtData.Columns.Add("Ten", typeof(String));
            dtData.Columns.Add("Lop", typeof(String));
            dtData.Columns.Add("Diem", typeof(int));
            //
        }
        private void loadData()
        {
            // cách 1
            dtData.Rows.Add(1,"Tran A","Lop A",2);
            dtData.Rows.Add(2, "Tran B", "Lop A", 5);

            // cách 2:
            DataRow drNew = dtData.NewRow();
            drNew["TT"] = 3;
            drNew["Ten"] = "Le Binh";
            drNew["Lop"] = "Lop B";
            drNew["Diem"] = 8;
            dtData.Rows.Add(drNew);
            //
            for(int i=4;i<=10;i++)
            {
                DataRow drAdd2 = dtData.NewRow();
                drAdd2["TT"] = 4;
                drAdd2["Ten"] = "Nguyen "+ i.ToString();
                drAdd2["Lop"] = "Lop C";
                drAdd2["Diem"] = 9 ;
                dtData.Rows.Add(drAdd2);
            }
            //
            dataGridView1.DataSource = dtData;
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {   //5-   " OR (Diem>=5 AND Diem<=")";
            string nd = textBox1.Text;
            // 5-8:    {tudiem}=5  , {dendiem}=8
            string tudem = "0";
            string dendiem = "10";
            string where_diem = "";
            //
            if(nd.Contains("-"))
            {
                tudem = nd.Split('-')[0];
                dendiem = nd.Split('-')[1];
                if(dendiem!=string.Empty)
                    where_diem = " OR (Diem>="+tudem+" AND Diem<="+dendiem+")";
            }    
           
            DataView dv = dtData.DefaultView;
            dv.RowFilter = "Ten Like '%" + nd
                + "%' OR Lop Like '%" + nd + "%' "+ where_diem;
              

        }
    }
}
 

Sử dụng DefaultView và Row RowFilter DataTable trong C#