C#如何根据时间控件显示数据库中对应信息(下)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Delicious_Life/article/details/84898393

选定时间范围,显示信息

下篇的需求是选择一个时间段之间的数据 

代码如下:

<1>Entity

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Entity
{
    /// <summary>
    /// 退卡表实体类
    /// </summary>
    public class CancelCardEntity
    {
        //卡号
        private int cardNo;
        public int CardNo
        {
            get { return cardNo; }
            set { cardNo = value; }
        }

        //学号
        private int studentNo;
        public int StudentNo
        {
            get { return studentNo; }
            set { studentNo = value; }
        }

        //学生姓名
        private string studentName;
        public string StudentName
        {
            get { return studentName; }
            set { studentName = value; }
        }

        //退卡金额
        private double cancelCash;
        public double CancelCash
        {
            get { return cancelCash; }
            set { cancelCash = value; }
        }

        //退卡日期
        private string date;
        public string Date
        {
            get { return date; }
            set { date = value; }
        }

        //开始日期
        private string dtStart;
        public string DtStart
        {
            get { return dtStart; }
            set { dtStart = value; }
        }

        //结束日期
        private string dtend;
        public string Dtend
        {
            get { return dtend; }
            set { dtend = value; }
        }

        //退卡时间
        private string time;
        public string Time
        {
            get { return time; }
            set { time = value; }
        }

        //结账
        private string isCheck;
        public string IsCheck
        {
            get { return isCheck; }
            set { isCheck = value; }
        }

        //操作人
        private string head;
        public string Head
        {
            get { return head; }
            set { head = value; }
        }


    }
}

<2>IDAL

   public  interface IQueryCancelRecord
    {

        /// <summary>
        ///  金额返还信息查询
        /// </summary>
        /// <param name="cancel"></param>
        /// <returns></returns>
        List<Entity.CancelCardEntity> QueryCancelRecord(Entity.CancelCardEntity cancel);
    }

<3>DAL

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;

namespace DAL
{
   public  class QueryCancelRecordDAL : IDAL.IQueryCancelRecord
    {
        //查询日期范围内是否有记录
        public List<Entity.CancelCardEntity> QueryCancelRecord(Entity.CancelCardEntity cancel)
        {
            SQLHelper sqlhelper = new SQLHelper();
            SqlParameter[] sqlparams = { new SqlParameter("@dateTimePicker1", cancel.DtStart), new SqlParameter("@dateTimePicker2", cancel.Dtend) };
            string sql = @"SELECT * FROM T_CancelCard WHERE date between @dateTimePicker1 and @dateTimePicker2";            
            DataTable table = sqlhelper.ExecuteQuery(sql, sqlparams, CommandType.Text);

            //将Datatable类型转换为list泛型
            ConvertHelper ct = new ConvertHelper();
            List<Entity.CancelCardEntity> List = new List<Entity.CancelCardEntity>();
            List = ct.ConvertTomodel<Entity.CancelCardEntity>(table);
            return List;

        }
    }
}

<4>Factory

        /// <summary>
        /// 金额返还信息查询
        /// </summary>
        /// <returns></returns>
        public IDAL.IQueryCancelRecord QueryCancelRecord()
        {
            string ClassName = StrDB + "." + "QueryCancelRecordDAL";  //DAL层的类名
            return (IDAL.IQueryCancelRecord)Assembly.Load(StrDB).CreateInstance(ClassName);   //反射+工厂的应用
        }

<5>BLL

namespace BLL
{
    public class QueryCancelRecordBLL  //金额返还信息查询
    {


        /// <summary>
        /// 金额返还信息查询
        /// </summary>
        /// <param name="cancelCard"></param>
        /// <returns></returns>
        public List<Entity.CancelCardEntity> QueryCancelRecord(Entity.CancelCardEntity cancelCard)
        {
            Factory.OperatorFactory fact = new Factory.OperatorFactory();
            IDAL.IQueryCancelRecord idal = fact.QueryCancelRecord();
            return idal.QueryCancelRecord(cancelCard);
        }
    }
}

<6>Facade

namespace Facade
{
    public class QueryCancelRecordFacade  //金额返还信息查询
    {
        /// <summary>
        /// 金额返还信息查询
        /// </summary>
        /// <param name="cancelCard"></param>
        /// <returns></returns>
        public List<Entity.CancelCardEntity> QueryCancelRecord(Entity.CancelCardEntity cancelCard)
        {
            return new BLL.QueryCancelRecordBLL().QueryCancelRecord(cancelCard);
        }
    }
}

<7>UI

        private void btnQuery_Click(object sender, EventArgs e)
        {
            //根据日期来确定信息
            DateTime dtStart;
            DateTime dtEnd;
            dtStart = Convert.ToDateTime(dtpStart.Value.Date.ToString("yyyy-MM-dd"));
            dtEnd = Convert.ToDateTime(dtpEnd.Value.Date.ToString("yyyy-MM-dd"));

            Entity.CancelCardEntity cancel = new Entity.CancelCardEntity();
            cancel.DtStart = dtStart.ToString("yyyy-MM-dd");
            cancel.Dtend = dtEnd.ToString("yyyy-MM-dd");

            if (DateTime.Compare(dtStart, dtEnd) >= 0)
            {
                MessageBox.Show("时间范围不合理,请重新选择时间范围");
            }
            else
            {
                Facade.QueryCancelRecordFacade facade = new Facade.QueryCancelRecordFacade();
                List<Entity.CancelCardEntity> list = new List<Entity.CancelCardEntity>();
                list = facade.QueryCancelRecord(cancel);
                if (list.Count > 0)
                {
                    dataGridView1.DataSource = list;
                }
                else
                {
                    MessageBox.Show("无查询记录");
                    dataGridView1.DataSource = "";
                }
            }
        }

解决Bug

功能实现了,先别着急高兴。红色圈中的这两个屌是干嘛的?再仔细一看,这不就是我们在实体层中定义的时间属性用来接收两个时间控件的信息的嘛,这东西显示出来没什么卵用呀。别急,有一种超简单的办法砍掉它!

耐心一数,原来是数据库中第5个,第6个字段显示了不必要的部分,我们用代码将他隐藏起来 

 最后我们来看下效果,跳过这两个时间属性,它又继续显示后面的属性了

猜你喜欢

转载自blog.csdn.net/Delicious_Life/article/details/84898393