数据库数据筛选方案

一 如果只进行单一的筛选,比如只对日期进行筛选,显示一定时期内的数据等等。这样可以直接用数据库语句经行筛选

 例子:

string sqlstr=string.fomat("select * from table1 where date  between {0} and {1}",datetimepiker1.value.toshortdatestring(),datetimepiker2.value.toshortdatestring());
二、如果经行多项条件筛选,比如有日期,有打折或正价,等等,这样的话最好把数据复制到一个新的表中,然后利用DATASET的属性来进行显示,当然也可以利用数据库中表的特有属性来经行判断(两个自己选一个)。
private void Filter(bool isSpeed)
        {
           // DataView dv = new DataView(ds.Tables [0]);
            DataTable dt=ds .Tables[0];//提取数据

            if (isSpeed == true)
            {
                // dv.RowFilter = "aveSpeed='false'";
                dt.Columns.Remove("aveSpeed");
                //dt.Rows["aveSpeed"].ToString () = 60;
                DataRow[] drArr = dt.Select("AveSpeed>'60'");//筛选数据
               // DataRow[] drArr= dt.Select("'++'<datatime");

                //筛选显示
                DataTable dtNew = dt.Clone();
                for (int i = 0; i < drArr.Length; i++)
                {
                    dtNew.ImportRow(drArr [i]);

                }
                this.dgvRoadReport .DataSource =dtNew ;
            }

            else
            {
                //dv.RowFilter = "aveSpeed='true'";
            }
            
            

        }


利用数据库属性的话(DATAVIEW 自己百度吧):

 private void Filter(Boolean isDiscount)
        {
            DataView dv = new DataView(ds.Tables[0]);
            if (isDiscount == true)
            {
                dv.RowFilter = "是否特价='false'";
            }
            else
            {
                dv.RowFilter = "是否特价='true'";
            }
            // 重新绑定数据源
            this.dgvCommodity.DataSource = dv;
        }
原文地址:https://www.cnblogs.com/mamiyiya777/p/7306596.html