打印数据表格

开发工具与关键技术: Visual Studio   打印
作者:黎凤焕
撰写时间:2019年 5月 30 日
 打印数据表格是常见的一部分内容,打印数据用到水晶报表插件,先安装水晶报表插件,添加水晶报表在项目里,然后创建数据集,添加打印表格的字段名,绘画所打印的图表,绘画图表这操作可以说,想要绘画出比较好看的图表,没点画画技术真的好难画出好看的图表,绘画图表说难不难,说容易不容易,靠个人发挥。
 绘画好数据表格后,写方法时,你会发现,有一个方法是通用的,不管你要打印的内容是什么,把你要查询的数据查询出来后写上该有的代码,就可以打印出所需要的表格,从而比较好实现这个功能。LINQToDataTable这个方法是已经固定好的,只要对它进行运用就可以了,不需要任何的改动。

    public DataTable LINQToDataTable<T>(IEnumerable<T> varlist)
    {   //定义要返回的DataTable对象
        DataTable dtReturn = new DataTable();
        // 保存列集合的属性信息数组
        PropertyInfo[] oProps = null;
        if (varlist == null) return dtReturn;//安全性检查
                                             //循环遍历集合,使用反射获取类型的属性信息
        foreach (T rec in varlist)
        {
            //使用反射获取T类型的属性信息,返回一个PropertyInfo类型的集合
            if (oProps == null)
            {
                oProps = ((Type)rec.GetType()).GetProperties();
                //循环PropertyInfo数组
                foreach (PropertyInfo pi in oProps)
                {
                    Type colType = pi.PropertyType;//得到属性的类型
                                                   //如果属性为泛型类型
                    if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition()
                    == typeof(Nullable<>)))
                    {   //获取泛型类型的参数
                        colType = colType.GetGenericArguments()[0];
                    }
                    //将类型的属性名称与属性类型作为DataTable的列数据
                    dtReturn.Columns.Add(new DataColumn(pi.Name, colType));
                }
            }
            //新建一个用于添加到DataTable中的DataRow对象
            DataRow dr = dtReturn.NewRow();
            //循环遍历属性集合
            foreach (PropertyInfo pi in oProps)
            {   //为DataRow中的指定列赋值
                dr[pi.Name] = pi.GetValue(rec, null) == null ?
                    DBNull.Value : pi.GetValue(rec, null);
            }
            //将具有结果值的DataRow添加到DataTable集合中
            dtReturn.Rows.Add(dr);
        }
        return dtReturn;//返回DataTable对象
    }

打印数据的时候,要提示用户,是否需要打印全部数据,不需要请进行筛选,如果没有提示,点击打印的时候就直接打印了,这样子有点唐突,不利于用户的体验,给用户的印象不好,浪费不必要的时间。
在这里插入图片描述

当用户点击确定按钮的时候,才会去打印所对应的数据,点击取消的时候,不打印数据信息,退出提示框。打印数据的时候,会根据你所绘画的表格打印该有的数据,而你绘画的图表是要和要打印的数据名字保持一致,绘画的时候,字段名要和数据库的字段名保持一致,和查询的数据字段名保持一致,这样写方法后用的时候才会打印有数据。页眉下方的文字,与数据库的保持一致,与打印的表格信息保持一致。
表格绘画根据需要什么画什么,如图:
在这里插入图片描述
在做项目的时候,遇到了一个问题,就是使用日期的插件,点击日期里面的时间,对表格进行查找数据,点击查找的按钮会没有反应的,有该日期的选项,选择它去查找不会有反应,如果不使用插件,用输入框的形式,可以查询到该有的数据。
在这里插入图片描述
经过师兄的讲解,明白了,不要被它的外表迷惑了,看是这样的,其实并不是这样的,看着是斜杠的形式,其实不是的,日期的插件形式是yyyy-mm-dd,显示在页面的是 年/ 月/ 日,而数据库里面要查找的日期是2019/04/27的形式,所以才会查找不了该数据,如果要使用日期的插件,就要对查找的数据进行转换,如果你的日期格式是:2019-04-27 的格式,使用日期的插件就不用去转换它。
在这里插入图片描述
代码如下:
var DateTimes = $("#searchDateTimes").val();
var datetime = DateTimes.replace("-", “/”);//yyyy-mm-dd
var datetime = datetime.replace("-", “/”);
if (datetime == null || datetime == undefined) {
datetime = “”;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值