• 用两个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及其二次开发,一起进步!
  • 相关阅读:
    netcore3.0使用Session
    docker redis使用
    协变和逆变
    HashTable、Dictionary、ConcurrentDictionary三者区别
    设计模式-行为型-解释器模式
    设计模式-行为型-备忘录模式
    jq实现批量全选与反选
    call()和apply()的用法及区别,看这个例子就明白了
    谈谈对闭包的理解
    export,import和export default的区别
  • 原文地址:https://www.cnblogs.com/tuncaysanli/p/1338429.html
Copyright © 2020-2023  润新知