• FastReport自定义数据源及ListView控件的使用


    ##1、想批量生成一堆物资信息卡,效果如下图所示,fastreport可以一下全部生成,并且发现不用单独写东西,
    ##2、发现FastReport官方给出的Demo.exe很友好,基本可以满足要求,想尝试修改tree树,直接加载自定义的报表,通过ILSpy查看Demo源码,发现tree的数据源是DemosReports eports.xml,修改reports.xml,基本满足要求,不用再动手开发
    1. <?xml version="1.0" encoding="utf-8"?>
      <Reports>
      <FolderName="Definition">
      <ReportFile="wz_barcode_one.frx"/>
      <ReportFile="wz_barcode_all.frx"/>
      </Folder>
      <FolderName="General">
      <ReportFile="Simple List.frx"/>

       

    ##3、想继续完善,做的友好点,实现如下效果,用ListView显示数据,根据用户选择,在打印数据,发现了两个难点
    ###3.1 自定义用户数据源的问题,网上百般查找和测试都无用,官方文档、Demo也一一看了,可能在软件中能实现,直接通过FastRepost来自定义数据源吗,真是难。后来在官网上终于发现了有这个一个 FRNetProgrammerManual-en.pdf 这个文档中 看到一个 Passing custom SQL的功能,最终经过测试,代码如下,做报表,只要能自定义数据源,我想一切都不是问题了。
    1. try{
      TableDataSource dts =Report.GetDataSource("####")asTableDataSource;
      dts.SelectCommand="SELECT * FROM ### where WZID in ("+ss+")";
      // MessageBox.Show(dts.SelectCommand.ToString());
      dts.Init(); //不能少 关键
      }
      catch(Exception ee){
      MessageBox.Show(ee.Message.ToString());
      return;
      }

      ###3.2 关于ListView的使用,TextBox,grid,ComboBox,DataSelector都试了一遍,发现这些控件都是FastReport自带的过滤控件只要绑定数据列,就能实现过滤,唯独ListView没这功能,也是各种测试都无果,后来只要定义了两个数据源,一个数据源用来绑定ListView,一个用来绑定报表,至于绑定绑定报表的功能在这就起到数据字段的功能,最后通过自定义sql来决定数据源。

     ###3.3 关于ListView的使用 不知道Fastreport是不是抽风,控件的click事件均能生成和保存,但是其他事件比如ItemChecked,初始的时候设置了,结果运行一次之后,事件值被自动清空了,不知道什么原因,后来通过Form1_Load,强制注册可解决
    1. privatevoidForm1_Load(object sender,EventArgs e){
      lv_BaseWZinfo.ItemChecked+= lv_BaseWZinfo_ItemChecked
     ###3.4 关于控件的DialogResult值的问题,发现只有设置为Ok时,才能在点击button时跳转至报表,如果设置为None,click事件会触发,但不会显示报表,设置为OK,不选择任何东西也会跳转至报表,最后折中通过默认将button的DialogResult设置为None,发生选中时触发为OK
    1. privatevoid lv_BaseWZinfo_ItemChecked(object sender,ItemCheckedEventArgs e)
      {
      if(e.Item.Checked){
      btnOk.DialogResult=DialogResult.OK;
      }
      }
     ###3.5 有想进一步改造Demo的可以通过ILSpy反编译一下,进行修改


     



  • 相关阅读:
    拜托,面试官别问我「布隆」了
    金三银四送offer,大厂高薪,仅限50名
    通知与服务——消息通知——通知渠道NotificationChannel
    通知与服务——服务Service——服务的启动和停止
    多线程——异步服务IntentService
    多线程——异步任务AsyncTask
    多线程——分线程通过Handler操作界面
    基础复习——新建activity页面——按钮监听事件——跳转到下个activity页面
    通知与服务——服务Service——服务的绑定与解绑&延迟绑定服务与解绑服务
    基础复习——文本显示——TextView——设置视图的宽高——设置视图之间的间距:layout_margin以及padding——设置视图的对其方式:layout_gravity以及gravity
  • 原文地址:https://www.cnblogs.com/yinsolence/p/f59f4ed224cd1e299ecbfa20e9c797d9.html
Copyright © 2020-2023  润新知