emap高级搜索中的querySetting使用

C#实现学生简历打印功能的完整开发指南 在现代软件开发中,打印功能是许多业务系统不可或缺的一部分,尤其在教育、人事、报表生成等领域中具有广泛应用。C#作为.NET平台的核心开发语言,提供了完善的打印支持,通过封装Windows GDI+图形接口,使得开发者可以灵活控制打印内容的布局与输出。本章将从打印功能的基本概念入手,介绍其在学生简历报表生成等实际项目中的关键作用。通过剖析C#打印模块的整体架构,帮助读者理解PrintDocument、PrintPage等核心类与事件的工作机制。 阅读详情

1、使用方法

//外部使用方法

$search.on('search'. function (event, conditions) {
 $table.emapdatatable('reloadFirstPage', {querySetting: conditions});
})
//或者
$search.on('search'. function (event, conditions) {
 $table.emapdatatable('reload', {querySetting: conditions});
})

2、实现方法

//内部封装的属性reloadFirstPage

/**
 * @method reloadFirstPage
 * @description 默认刷新表格回到首页
 * @param {Object} params - 附带参数
 * @param {Function} callback - 回调函数
 */
Plugin.prototype.reloadFirstPage = function(params, callback) {
    this.reload($.extend({}, params, {
        _gotoFirstPage: true
    }), callback);
};

//reloadFirstPage调用reload

/**
 * @method reload
 * @description 刷新表格数据
 * @param {Object} params - 附带参数
 * @param {Object} params._gotoFirstPage - 
 * callback 可以是function 或者是 true,true的话意味着强制跳回第一页
 * _gotoFirstPage 如果callback为回调函数,此时需要调回第一页 则可以设置params._gotoFirstPage为true
 * 
 */
Plugin.prototype.reload = function(params, callback) {
    /**
     * 方法内容
     */
    if (!$.isEmptyObject(this.settings.defaultParams)) {
        this.source.data = _getQuerySetting(this.settings.defaultParams);
    }
    var gotoFirstPage = false;
    if (params) {
        gotoFirstPage = params._gotoFirstPage;
        gotoFirstPage && delete params._gotoFirstPage;
    }
    if (params) {
        if (!$.isEmptyObject(this.settings.defaultParams)) {
            try {
                var query = JSON.parse(params.querySetting);
                query.push.apply(query, JSON.parse(this.source.data.querySetting));
                this.source.data.querySetting = JSON.stringify(query);
            } catch (e) {
                this.source.data = params;
            }
        } else {
            this.source.data = params;
        }
    }
    if (callback === true || gotoFirstPage === true) {
        if (!this.$element.jqxDataTable('goToPage', 0)) {
            this.$element.jqxDataTable('updateBoundData');
        }
    } else {
        this.$element.jqxDataTable('updateBoundData');
    }
    var that = this;
    if (typeof callback == 'function') {
        var intervalId = setInterval(function() {
            if (that.$element.jqxDataTable('isBindingCompleted')) {
                clearInterval(intervalId);
                // 将callback放在 refresh后面, 避免callback中的dom操作被refresh刷新掉 zhuhui 2016-10-21
                that.$element.jqxDataTable('refresh');
                callback();
            }
        }, 10);
    }
};

3、querySetting的使用和构造

3.1 querySetting可以使用高级搜索框自动生成获取

  • 参考emap中的数据格式,自定义手动构造searchModel
  • //手动构造:
    /**
    * 先构造searchModel
    * 再转换模型,给模型加上get方法
    * searchData = WIS_EMAP_SERV.convertModel(searchModel,"search");
    * 初始化高级搜索框,附带模型数据
    * $("#search").emapAdvancedQuery({data: searchData});
    * 绑定search点击事件
    * $('#search').on('search', function(e, data, opts){
    *   // data 为序列化的搜索条件,即querySetting
    *   //调用表格reload方法
    *    $("#datatable").emapdatatable('reload', {querySetting: data});
    * });
    */
    var searchModel = {
        "name": "083a04b8-0439-4103-891d-aa7d7634d575",
        "id": "t_jzg_jbxx_select_condition",
        "xtype": "customSearcher",
        "appName": "应用1",
        "modelName": "模型1",
        "controls": [
            {
                "name": "XM",
                "caption": "姓名",
                "dataType": "String",
                "defaultBuilder": "equal",
                "builderList": "cbl_String",
                "quickSearch": true,
                "xtype": "tree",
                "url": "http://res.wisedu.com/fe_components/mock/tree.json",
                "dataSize": 90
            },
            {
                "name": "NNQJ",
                "caption": "年龄区间",
                "dataType": "String",
                "defaultBuilder": "equal",
                "builderList": "cbl_String",
                "xtype": "number-range"
            },
            {
                "name": "身高",
                "caption": "身高",
                "dataType": "String",
                "defaultBuilder": "equal",
                "builderList": "cbl_String",
                "xtype": "number"
            },
            {
                "name": "XH",
                "caption": "学号",
                "dataType": "String",
                "defaultBuilder": "equal",
                "builderList": "cbl_String",
                "xtype": "date-local",
                "quickSearch": true,
                "url": "http://res.wisedu.com/fe_components/mock/button_group_options.json",
                "dataSize": 20
            },
            {
                "name": "XBDM",
                "caption": "性别",
                "dataType": "String",
                "defaultBuilder": "equal",
                "builderList": "cbl_List",
                "url": "http://res.wisedu.com/fe_components/mock/select.json",
                "xtype": "radiolist",
                "search.quickSearchXtype": "select",
                "dataSize": 1,
                "quickSearch": true
            },
            {
                "name": "PYCCDM",
                "caption": "培养层次",
                "dataType": "String",
                "defaultBuilder": "equal",
                "builderList": "cbl_String",
                "url": "/code/9ec58134-0517-4664-8969-5342ffcaf190.do",
                "xtype": "date-local",
                "dataSize": 1
            },
            {
                "name": "DWDM",
                "caption": "院系",
                "dataType": "String",
                "defaultBuilder": "equal",
                "builderList": "cbl_String",
                "quickSearch": true,
                "url": "http://res.wisedu.com/fe_components/mock/button_group_options.json",
                "xtype": "multi-buttonlist",
                "dataSize": 10
            },
            {
                "name": "ZYDM",
                "caption": "专业",
                "dataType": "String",
                "defaultBuilder": "equal",
                "builderList": "cbl_String",
                "quickSearch": false,
                "url": "/code/94b15a8a-9b45-4455-b254-1ec2065028d9.do",
                "xtype": "select",
                "dataSize": 6
            },
            {
                "name": "BJDM",
                "caption": "班级",
                "dataType": "String",
                "defaultBuilder": "equal",
                "builderList": "cbl_String",
                "url": "/code/ab43d66a-9778-49b1-b3e0-0ce46317fed9.do",
                "xtype": "select",
                "dataSize": 100,
                "hidden": true
            },
            {
                "name": "XZNJ",
                "caption": "现在年级",
                "dataType": "String",
                "defaultBuilder": "equal",
                "builderList": "cbl_String",
                "quickSearch": false,
                "xtype": "text",
                "dataSize": 10
            },
            {
                "name": "XQDM",
                "caption": "校区",
                "dataType": "String",
                "defaultBuilder": "equal",
                "builderList": "cbl_String",
                "quickSearch": false,
                "url": "/code/2eac9654-d335-4449-9ab0-42a32a3a0fda.do",
                "xtype": "select",
                "dataSize": 40
            },
            {
                "name": "SSQDM",
                "caption": "宿舍区",
                "dataType": "String",
                "defaultBuilder": "equal",
                "builderList": "cbl_String",
                "url": "/code/f4fbe313-bcf7-4599-90ff-f89db2716417.do",
                "xtype": "select",
                "dataSize": 40,
                "hidden": true
            },
            {
                "name": "SSLDM",
                "caption": "宿舍楼",
                "dataType": "String",
                "defaultBuilder": "equal",
                "builderList": "cbl_String",
                "quickSearch": false,
                "url": "/code/c043b195-d8a2-498d-86b5-09e27da23b2d.do",
                "xtype": "select",
                "dataSize": 40
            },
            {
                "name": "FJH",
                "caption": "房间号",
                "dataType": "String",
                "defaultBuilder": "equal",
                "builderList": "cbl_String",
                "quickSearch": true,
                "xtype": "text",
                "dataSize": 40
            },
            {
                "name": "SFZJH",
                "caption": "身份证件号",
                "dataType": "String",
                "defaultBuilder": "equal",
                "builderList": "cbl_String",
                "quickSearch": true,
                "grid.hidden": true,
                "xtype": "text",
                "dataSize": 20
            }
        ],
        "builderLists": {
            "cbl_String": [
                {
                    "name": "include",
                    "caption": "包含"
                },
                {
                    "name": "equal",
                    "caption": "等于"
                },
                {
                    "name": "notEqual",
                    "caption": "不等于"
                },
                {
                    "name": "beginWith",
                    "caption": "以..开始"
                },
                {
                    "name": "endWith",
                    "caption": "以..结束"
                }
            ],
            "cbl_List": [
                {
                    "name": "equal",
                    "caption": "等于"
                },
                {
                    "name": "notEqual",
                    "caption": "不等于"
                }
            ],
            "cbl_upper_String": [
                {
                    "name": "upper_equal",
                    "caption": "等于"
                },
                {
                    "name": "upper_notEqual",
                    "caption": "不等于"
                },
                {
                    "name": "upper_include",
                    "caption": "包含"
                },
                {
                    "name": "upper_notInclude",
                    "caption": "不包含"
                },
                {
                    "name": "upper_beginWith",
                    "caption": "以..开始"
                },
                {
                    "name": "upper_endWith",
                    "caption": "以..结束"
                }
            ],
            "cbl_Other": [
                {
                    "name": "equal",
                    "caption": "等于"
                },
                {
                    "name": "notEqual",
                    "caption": "不等于"
                },
                {
                    "name": "more",
                    "caption": "大于"
                },
                {
                    "name": "less",
                    "caption": "小于"
                },
                {
                    "name": "moreEqual",
                    "caption": "大于等于"
                },
                {
                    "name": "lessEqual",
                    "caption": "小于等于"
                }
            ],
            "cbl_equal_List": [
                {
                    "name": "equal",
                    "caption": "等于"
                }
            ]
        }
    };
    searchData = WIS_EMAP_SERV.convertModel(searchData,"search");
    $("#search").emapAdvancedQuery({
      data: searchData
    });
    $('#search').on('search', function(e, data, opts){
      // data 为序列化的搜索条件
      console.log(data);  
      //调用表格reload方法
      $("#datatable").emapdatatable('reload', {querySetting: data});
    });
    
    //其中e当前点击事件对象
    //data为需要的querySetting条件
    //opts为当前高级搜索中包含的一切相关参数
  •  emap中模型配置获

    //数据模型生成
    
    //首先:获取高级搜索模型,searchModel 
    var searchModel = WIS_EMAP_SERV.getModel('modules/editTable.do', 'T_PXXX_XSJBXX_QUERY', 'search')
    
    //其次,初始化高级搜索框:
    $('#advancedQueryPlaceholder').emapAdvancedQuery({data: searchData});
    
    //最后绑定搜索触发事件
    $('#advancedQueryPlaceholder').on('search', function(e, data, opts){
          // data 为序列化的搜索条件
          console.log(data);  
          //调用表格reload方法
          $("#retirementInfoTable").emapdatatable('reload', {querySetting: data});
    });
    
    //其中e当前点击事件对象
    //data为需要的querySetting条件
    //opts为当前高级搜索中包含的一切相关参数

     

 高级搜索框自动生成querySetting,依据参数规则,从searchModel中拼接返回querySetting:

 

 

3.2 自定义构造querySetting,遵循querySetting的规则

//定义一个数组
var querySetting=[];

//querySetting数组中每一个元素为一个对象或一个数组

//最普通的情况是都是单个js对象:var obj ={};
//对象的格式为:
var obj={
    "name":"XSBH",
    "caption":"学号",
    "value":"1",
    "linkOpt":"AND",
    "builder":"notEqual"
}
每一个对象代表一个附加sql搜索条件
如在sql中展示为:and (xsbh <>1)
(obj.name obj.builder   obj.value obj.linkOpt )
(xsbh      <>           1            and      )
只有一个参数对象,1后面的and不展示
最后一个参数对象,1后面的and不展示
builder翻译过来可以为:<>,=,>,<,in,like,>=,<=,endWidth,beginWidth等等
linkOpt可以为 and or


//复杂情况:
querySetting数组里嵌套另外一个querySetting数组
同时包含单个对象,这样就形成了层次结构:
//整个querySetting
var querySetting=[
  {"name":"XH","caption":"学 号","linkOpt":"AND","builderList":"cbl_String","builder":"equal","value":"123"},  
  {"name":"ZGH","value":"98010","linkOpt":"AND","builder":"equal"}, 
  {"name":"ZGH1","value":"98010","linkOpt":"AND","builder":"equal"},
  //另外一个querySetting
  [{"caption":"审核状态","name":"SHZT","value":"0","builder":"notEqual","linkOpt":"AND"}]
]
//层次结构代表附加sql可以有层次,
//此处为and(xh=123 and zgh=98010 and zgh1=98010 and (shzt <> 0) )
括号里面有了另外一个括号

层次之间是and还是or连接,需要看每一个子层次第一个对象的linkOpt,第一个是or则子层次之间用or连接,第一个是and则用and连接

 

C#打印操作实例--设置横向或纵向打印实例 立即下载

相关推荐

MOS 管驱动设计细节,波形分析

一般认为MOSFET是电压驱动的,不需要驱动电流。然而,在MOS的G S两级之间有结电容存在,这个电容会让驱动MOS变的不那么简单。 如果不考虑纹波和EMI等要求的话,MOS管开关速度越快越好,因为开关时间越短,开关损耗越小,而在开关电源中开关损耗占总损耗的很大一部分,因此MOS管驱动电路的好坏直接决定了电源的效率。 对于一个MOS管,如果把GS之间的电压从0拉到管子的开启电压所用的时间越短,那么MOS管开启的速度就会越快。与此类似,如果把MOS管的GS电压从开启电压降到0V的时间越短,那么MOS管关断的

m0_50862404的博客 1万+

EMAP调整列表页表格数据自适应换行后表单出现异常换行

2、设置Save.html样式。1、设置html文件样式。

qq_43856442的博客 480

Workbuddy+DeepSeek V4傻瓜流配置全指南:API接入、模型切换与Agent实战

AI编程助手的核心价值不在于模型本身,而在于如何稳定、安全、低门槛地调用其能力。Agent作为智能体范式,依赖可靠的运行时环境与标准化API通信;DeepSeek V4系列凭借高吞吐、低延迟和强工具调用支持,成为当前生产级Agent的理想引擎。Workbuddy则通过本地配置管理、环境变量注入与UTF-8无BOM容错等工程设计,将复杂部署简化为可复现、可版本化、可团队协同的实践流程。本文聚焦API接入路径下的真实卡点——从Key获取验证、models.json字段语义到沙箱权限控制,覆盖开发者在Window

weixin_33702545的博客 2353

如何给EmapDataTable添加统计行

EmapDataTable添加统计行

campuscrowd的博客 899

京东技术产品经理面试全记录:从简历投递到一面45分钟实战复盘

本文深度复盘京东技术产品经理面试全流程,从策略准备、思维题拆解、项目阐述到反问谈判,提供了一套可演练的求职策略体系。文章强调该岗位需具备横跨技术与商业的枢纽能力,并通过“QQ分组vs微信标签”等案例,剖析了产品思维与结构化表达在面试中的关键作用,助力候选人将紧张转化为掌控感。

weixin_29275257的博客 626

Python爬取拼多多商品数据保姆级教程(附源码及效果图)

本文介绍了使用Python爬取拼多多商品数据的完整教程。通过DrissionPage库模拟浏览器操作,利用正则表达式提取嵌入在HTML中的商品数据(关键步骤是从window.rawData变量获取),解析后转换为结构化数据并导出Excel。教程包含八大步骤:环境配置、浏览器初始化、网络监听、搜索模拟、数据提取(核心是正则匹配JSON)、数据验证、字段解析和Excel导出,最后提供了封装好的函数可直接调用。该方法特别适合课程作业或毕业设计获取电商数据,能爬取商品名称、价格、销量等关键信息,处理了价格单位转换等

weixin_46449236的博客 2076

子页面eventMap管理事件绑定不起作用

子页面eventMap管理事件绑定不起作用

campuscrowd的博客 600

AutoCAD2014与ObjectARX开发环境搭建实战指南

本文提供了一份详细的AutoCAD2014与ObjectARX开发环境搭建实战指南。内容涵盖从AutoCAD2014、Visual Studio 2010及ObjectARX 2014 SDK的版本匹配与环境准备,到Wizard安装、编码问题解决、Visual Studio配置,并最终通过一个完整的绘图命令开发示例,手把手引导开发者创建并加载第一个可运行的ObjectARX插件,为后续深入开发奠定坚实基础。

weixin_28475533的博客 286

emap组件使用

定义一个插件 plugin $.fn.emapdatatable = function(options, params, callback, flag) {}; jquery中的$.fn的用法 一、$.fn.method()=function(){}和$.fn.extend({})的比较 jQuery.fn ===$.fn=== jQuery.prototype $.fn.metho...

flybone7的博客 1446

信号检测算法的MATLAB仿真:能量检测、循环平稳检测和匹配滤波检测

根据具体的应用场景和要求,选择合适的信号检测算法可以提高系统的性能和可靠性。在无线电通信中,信号检测是一项重要的任务,它用于检测和识别接收到的信号。在本文中,我们将介绍三种常用的信号检测算法:能量检测、循环平稳检测和匹配滤波检测,并提供相应的MATLAB源代码进行仿真实现。在上述代码中,我们首先设置了能量检测的阈值,然后生成了一个包含1000个服从正态分布的随机信号样本的信号。在上述代码中,我们首先设置了信号模板,然后生成了一个包含信号模板的信号样本。最后,通过比较相关性的最大值与阈值来判断信号是否存在。

PixelLancer的博客 1362

无线传感网络的Matlab实现

Matlab是一种功能强大的数值计算和数据分析工具,也可以用于无线传感网络的建模和仿真。根据实际需求,可以进一步扩展和优化模型,例如考虑节点能量消耗、网络路由、数据融合等方面的问题。函数用于绘制节点之间的连接关系,其中第一个参数是邻接矩阵,描述了节点之间的连接关系。这里使用了一个4个节点的简单例子,可以根据实际需求修改节点数量和连接关系。可以使用Matlab中的图形绘制函数来可视化节点的位置和连接关系。在无线传感网络中,节点的能量是一个关键因素。通过计算节点的剩余能量,可以评估节点的能量消耗情况。

2301_79331387的博客 247

C#打印功能的详细说明

我们谈到C#打印和C#打印预览的实现其中主要就是包括:页面设置、打印预览、打印三大部分。打印的原理是:生成mdi文件,系统碰到mdi的时候会自动以打印的方式处理。所以,不管用什么模板,什么方式;能在PrintPage事件处理中,生成一张要打印内容的图片就OK了!主要的支持类都包括在命名空间System.Drawing.Printing中,在程序集System.Drawing.dll中实现。C#打印

Steven_ssm的博客 9959

YOLOv9实战:刀具磨损实时监控从摄像头到预测性维护(附车间落地代码)

摘要: 本文针对制造业刀具磨损监控痛点,提出基于YOLOv9的实时视觉检测方案。通过工业相机采集刀具图像,结合图像预处理(去油污、增强对比度)和深度学习模型,实现磨损等级分类与寿命预测。系统集成硬件选型(抗油污相机、红色环形光源)、数据增强(旋转、噪声模拟)及预测性维护(PLC联动),实测刀具利用率提升30%,工件报废率降至0.5%以下。详解车间部署、模型训练到系统落地的全流程,附代码与避坑指南,为工业视觉项目提供实战参考。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 541

提升你的C#技能:掌握PrintDocument实现打印操作的秘诀

用C#在开发应用的时候,经常需要打印操作,比如你需要打印某些记录,或者是某些图像都需要用到打印的操作,比如我需要打印报警记录,按照指定的格式打印出来,我需要PrintDocument类,将我需要的数据在PrintDocument上面规定好,再打印出来

qq_46104786的博客 5707

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C#Winform中打印预览时设置横向打印

目前只处理了StartPage和PrintPage。于是加上了QueryPageSettings事件的处理,发现每次执行打印时 QueryPageSettingsEventArgs.PageSettings.Landscape仍然为false,虽然前面设置了 DefaultpageSettings.Landscape=true。于是在此事件中将其指定为true,再次预览时,终于可以横向看到排列整齐的报表了。

Kaizen的博客 1966

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

emap组件,可编辑表格

展示效果: 案例布局:<article bh-layout-role="single"> <h2>表格编辑</h2> <section> <div class="emap"> <div class="tpl bh-mb-8"> <button class="bh-btn bh-btn-prima

campuscrowd的博客 1824

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

QuerySet方法大全

################################################################## # PUBLIC METHODS THAT ALTER ATTRIBUTES AND RETURN A NEW QUERYSET # ################################################################...

a961634066的博客 3369

emapdataTable 表格字段不显示了

emapdataTable表格字段不显示

campuscrowd的博客 893

SQL Server Query Store Settings (查询存储设置)

因此,如果您的查询不稳定且生成大量不同的计划,并且您想要捕获每个不同的计划,则可能需要增加此设置。尚未达到 CLEANUP_POLICY 的数据可能会被删除(例如,如果 MAX_STORAGE_SIZE_MB 为 2GB,CLEANUP_POLICY 为 30 天,并且您在 15 天内达到 2GB,则将开始删除数据)。您可以将其设置为 OFF,但在这种情况下,如果达到 MAX_STORAGE_SIZE_MB,OPERATION_MODE 将更改为 READ_ONLY,您将不再捕获新数据。

csdn_aspnet的专栏,请点击博客主页右上角三个点中的私信联系 9万+

利用 .NET Printing 命名空间从 Windows 窗体应用程序中进行预览和打印

利用 .NET Printing 命名空间从 Windows 窗体应用程序中进行预览和打印 发布日期: 12/13/2004 | 更新日期: 12/13/2004Alex Calvo本文假设您熟悉 C# 和 Windows 窗体下载本文的代码: PrintinginNET.exe (134KB) 摘要 打印是构成每个完整的、基于 Windows 的应用程序所需要的一

上帝狼 3200

打印系统开发(58)——打印系统开发笔记

一、打印控件:   PrintDocument:要打印的对象。   PageSetupDialog:打印设置对话框。   PrintPreviewControl:打印预览控件。   PrintPreviewDialog:打印预览对话框。   PrintDialog:打印对话框。 二、相关软件 我们的产品是基于Adobe来开发的,我们首先得知道这个功能具体是如何实现的,才好调查用我们的产...

qq_34573534的博客 1067

Windchill 高级查询之分页查询

除去Windchill系统的高级查询,分页大家都可以百度百度就找到栗子了,windchill圈子比较小,资料也比较少,贴一个分页查询的栗子: /** * 分页查询 * @param conditional * @return * @throws WTException */ public static PagingQueryResult searchByPage(Map&l...

Wonly_Wu的博客 1434

Setting学习(八)-搜索框(搜索过程)

从前面已经知道搜索界面的布局是线性布局,上面是一个searchview,而下面是一个recycleview显示搜索的结果,在搜索过程中,会从数据库里匹配,点击筛选结果,根据ClassName启动对应的界面: \packages\apps\settings\src\com\android\settings\search\SearchFragment.java onCreate()方法: 在onCr...

weixin_42339486的博客 704

移动开发框架使用

1、spriteFrame.js requirejs.onError = function (err) { console.log(err.requireType); console.log('modules: ' + err.requireModules); }; (function(require) { //require路径配置 var requireC...

flybone7的博客 456

【Winform】打印画面

1.添加PrintDocument控件 2.绑定PrintDocument的PrintPage方法     Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocu...

weixin_34114823的博客 135
上一篇: 2019-08-21开发总结
下一篇: emap组件使用
flybone7
博客等级 码龄9年 58粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值