一个GridView,一个DropDownList,一个Button ,
DropDownList为(0,最近7天),(1,最近15天),(2,最近30天),(3,查询所有)
当button点击时,根据DropDownList的SelectedIndex值查询。
该怎么循环查询好些呢。    protected void btn_cha_Click(object sender, EventArgs e)
    {
        if (ddl7.SelectedIndex == 0)
        {
            GridView1.DataSource = null;
            string sql = "select * from [jinhuo] where datediff(day,j_date,'" + DateTime.Now.ToShortDateString() + "')<7 and user_name='" + Session["userName"] + "'";
            SqlConnection con = new SqlConnection(conString);
            con.Open();
            SqlCommand cmd = new SqlCommand(sql, con);
            SqlDataReader sdr = cmd.ExecuteReader();
            GridView1.DataSource = sdr;
            GridView1.DataBind();
            con.Close();
            sdr.Close();
        }
        if (ddl7.SelectedIndex == 1)
        {
            GridView1.DataSource = null;
            string sql = "select * from [jinhuo] where datediff(day,j_date,'" + DateTime.Now.ToShortDateString() + "')<15 and user_name='" + Session["userName"] + "'";
            SqlConnection con = new SqlConnection(conString);
            con.Open();
            SqlCommand cmd = new SqlCommand(sql, con);
            SqlDataReader sdr = cmd.ExecuteReader();            GridView1.DataSource = sdr;
            GridView1.DataBind();
            con.Close();
            sdr.Close();
        }
        if (ddl7.SelectedIndex == 2)
        {
            GridView1.DataSource = null;
            string sql = "select * from [jinhuo] where datediff(day,j_date,'" + DateTime.Now.ToShortDateString() + "')<30 and user_name='" + Session["userName"] + "'";
            SqlConnection con = new SqlConnection(conString);
            con.Open();
            SqlCommand cmd = new SqlCommand(sql, con);
            SqlDataReader sdr = cmd.ExecuteReader();
            GridView1.DataSource = sdr;
            GridView1.DataBind();
            con.Close();
            sdr.Close();
        }
        if (ddl7.SelectedIndex == 3)
        {
            GridView1.DataSource = null;
            string sql = "select * from [jinhuo] where user_name='" + Session["userName"] + "'";
            SqlConnection con = new SqlConnection(conString);
            con.Open();
            SqlCommand cmd = new SqlCommand(sql, con);
            SqlDataReader sdr = cmd.ExecuteReader();
            GridView1.DataSource = sdr;
            GridView1.DataBind();
            con.Close();
            sdr.Close();
        }
    }

解决方案 »

  1.   

    唯一不同的就是条件,所以你把查询封装到一个方法中,传入条件,就不用这么罗嗦的写一堆一样的东西了
    还可以对datatable进行本地筛选,这样就不用频繁访问数据库了
      

  2.   

    别的不说,如下private void ExecSql(string sql)
    {
                GridView1.DataSource = null;
                SqlConnection con = new SqlConnection(conString);
                con.Open();
                SqlCommand cmd = new SqlCommand(sql, con);
                SqlDataReader sdr = cmd.ExecuteReader();
                GridView1.DataSource = sdr;
                GridView1.DataBind();
                con.Close();
                sdr.Close();
    }    protected void btn_cha_Click(object sender, EventArgs e)
        {
                string sql = "";
            if (ddl7.SelectedIndex == 0)
            {
                sql = "select * from [jinhuo] where datediff(day,j_date,'" + DateTime.Now.ToShortDateString() + "')<7 and user_name='" + Session["userName"] + "'";
            }
            if (ddl7.SelectedIndex == 1)
            {
               sql = "select * from [jinhuo] where datediff(day,j_date,'" + DateTime.Now.ToShortDateString() + "')<15 and user_name='" + Session["userName"] + "'";
            }
            if (ddl7.SelectedIndex == 2)
            {
                sql = "select * from [jinhuo] where datediff(day,j_date,'" + DateTime.Now.ToShortDateString() + "')<30 and user_name='" + Session["userName"] + "'";
            }
            if (ddl7.SelectedIndex == 3)
            {
                sql = "select * from [jinhuo] where user_name='" + Session["userName"] + "'";
            }
            ExecSql(sql);
        }