用两个Calendar控件来控制数据库记录的读入

   

先看实现效果吧!

   

这个问题,一听起来,感觉很容易,我当初也是这么认为的,但是在做的过程中,产生了很多的小问题,最后搞了一整天才搞定。很多人都说实现这个功能用ASP ajax控件CalendarExtender很容易,但是这个我搞了半天没搞出来。因而自己使用了下面的方法。

来看看步骤吧,

1)首先自己新建一个sql server的数据库表(本例子是数据库DCM下的表ZDossier,其中有一个datatime类型的字段(本例子的是“上报时间”这个字段)并且自己在表中填一些记录。

2)在页面上添加一个GridView,两个TextBox和两个ImageButton和一个Button以及两个Calendar控件,ID分别为:GridView1, txtCalendar1, txtCalendar2, IbtnCal1, IbtnCal2, Button1 Calendar1Calendar2,并将两个Calendar控件设置为不可见。

3)分别单击IbtnCal1IbtnCal2获得Click时间,单击Calendar1, Calendar2获得SelectionChanged事件,其代码如下:

protected void IbtnCal1_Click(object sender, ImageClickEventArgs e)

        {

            this.Calendar1.Visible = true;

        }

 

        protected void IbtnCal12_Click(object sender, ImageClickEventArgs e)

        {

            this.Calendar2.Visible = true;

 

        }

 

        protected void Calendar1_SelectionChanged(object sender, EventArgs e)

        {

            this.txtCalendar1.Text = this.Calendar1.SelectedDate.ToShortDateString();

            this.Calendar1.Visible = false;

        }

 

        protected void Calendar2_SelectionChanged(object sender, EventArgs e)

        {

            this.txtCalendar2.Text = this.Calendar2.SelectedDate.ToShortDateString();

            this.Calendar2.Visible = false;

        }

(4)本篇的重点不再讲GridView的用法,因此GridView 的数据绑定设置就不再详述。getData()是从数据库中读入数据并绑定在GridView中,其代码如下:

 

public void getData()

        {

            SqlConnection cn = new SqlConnection("server=ZHOUWEN;database=DCM_data;user=DCM;password=DCM;");

 

            cn.Open();

            DateTime dt1 = Convert.ToDateTime(this.txtCalendar1.Text);

            DateTime dt2 = Convert.ToDateTime(this.txtCalendar2.Text);

          

           string str = "SELECT [ID],[案卷编号], [任务号], [问题类别], [大类], [小类], [当前所处阶段], [上报时间], [立案时间], [案情描述],[位置说明] FROM [ZDossier] WHERE [当前阶段编号]<5 ORDER BY [上报时间] DESC ";

           

            SqlCommand cd = new SqlCommand(str, cn);

            SqlDataAdapter da = new SqlDataAdapter(cd);

            DataSet ds = new DataSet();

            da.Fill(ds, "ZDossier");

 

            DataTable DT1 = new DataTable();

            DataTable DT2 = new DataTable();

           

           //DT2获得表Tables["ZDossier"]的结构

            DT2 = ds.Tables["ZDossier"].Clone();

 

            DT1 = ds.Tables["ZDossier"];

            int n = DT1.Rows.Count;

            DateTime []DT=new DateTime[n];

          

          for (int i = 0; i < n; i++)

            {

                DT[i] = Convert.ToDateTime(DT1.Rows[i]["上报时间"]);

                   

                if ((DT[i]>=dt1) && (DT[i]<=dt2))

                    {

                    

                     DT2.Rows.Add(DT1.Rows[i].ItemArray);

                     

                    }

 

            }

         

           this.GridView1.DataSource = DT2.DefaultView;

           this.DataBind();

         

            cn.Close();

        }

(5)单击Button1,激发它的Click事件,用来调用getData,显示结果。

     protected void Button1_Click(object sender, EventArgs e)

        {

            getData();

         }

6)调试,运行,分别点两个ImageButton来选择两个时间,然后点Button1,看一下效果。这样就实现了通过这两个时间来控制数据的读入。

一起学习GIS及其二次开发,一起进步!
原文地址:https://www.cnblogs.com/tuncaysanli/p/1338429.html