引言参考资料
https://docs.devexpress.com/XtraReports/2666/detailed-guide-to-devexpress-reporting/store-and-distribute-reports/store-report-layouts-and-documents/load-report-layouts
https://docs.devexpress.com/XtraReports/DevExpress.XtraReports.UI.ReportDesignTool.ShowRibbonDesigner
设计器demo地址:
引言fastreport由于是单独的报表解决方案,因此原生支持报表模板修改,如果遇到改字体颜色这种小的需求,客户可以自己打开设计器编辑报表搞定;而devexpress的报表如果是在visual studio里面创建的话默认为带设计器的cs文件,如果要让客户可以直接修改报表模板,需要额外做一些操作。
以下示例所用devexpress的版本为18.1
解决方案1.准备repx模板文件首先需要准备报表模板文件,devexpress的模板文件类型为repx,可以从设计器里面新建或者另存为也可以在visual studio中把cs设计文件导出
repx文件其实是一个xml,它保存了界面布局
2.准备报表编辑器fastreport在安装程序之后会自动有一个Report Designer.exe的报表编辑器,但是devexpress(版本18.1)却没有这样的设计器,所以还需要新建一个项目来编辑模板(如果你用的旧版如12.1,在安装的DemoCenter目录"C:\Users\Public\Documents\DXperience 12.1 Demos\XtraReports\Bin\R ...
引言最近遇到客户提的一个需求,他要一页只显示20行明细数据;一番Google之后找到了官方博客介绍相关解决办法:How to display an estimated number of records on a report page于是我写了下面的代码
1234567891011int counter = 0; private void Data1_BeforePrint(object sender, EventArgs e) { if (counter >= 20) { Engine.StartNewPage();//打印到新的页面 counter = 0; } counter++; }
但是我预览出来,一页却只有18行;而且从设计器打印和直接打印预览的结果还不一样;
一番思考之后,我认为此处是Report.DoublePass设置导致的,在Report settings的官方教程中有说明;为解决这个问题,才有了这篇文章
解决方案由于BeforePrint事件的问题, ...
引言用过微信的都知道,里面有一个个性化二维码名片的功能;
最近接到需求要做一个类似的好看一点的二维码,微信里面不支持手动添加背景图片,估计是做的模板;但是配色不是我擅长的事,要做很多模板出来让用户选是不现实的,我期望有自动合成颜色的方法,一番搜索之后找到一个商用产品qrcode.studio,里面有一个透明背景的功能,可以实现我的要求。
于是参照实现了一个可以融合背景图片的透明背景图功能
解决方案在visual studio中打开从qrcode.studio下载下来的png二维码文件,放大之后可以看到module的形状
因此,在黑的地方画一个点,周围再自动做颜色渐变就可以了;这里的径向渐变可以使用RadialGradientBrush,但是我是Winform,没有这个画刷;于是我参考c# radial gradient brush effect in GDI and winforms使用了PathGradientBrush
主要的代码在这里,完整demo在最后
123456789101112131415161718192021222324252627282930313233343 ...
引言TeamViewer是一个非常好的远程支持工具,但是我们公司资金有限,所以只在局域网里面配备了一台正版客户端;当同事需要远程支持的时候再使用局域网RDP(mstsc)连接到那台PC。这个teamviewer有一个限制,就是一台电脑只能一个用户使用,当你其它用户登录的时候再连接就会提示无法连接。基于这个原因,我需要知道是谁登录到这个用户了。
解决方案参考这篇文章我编写了一个PowerShell脚本来通知当前登录的IP
123456789$output= netstat -n | find --% ":3389" | find --% "ESTABLISHED"##Invoke-RestMethod -Uri "https://sc.ftqq.com/[SCKey].send?text=mstscLogin&desp=$output"$Uri = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=[workWXkey]'$json2= &qu ...
解决方案参考这个链接:how-can-i-list-all-tags-for-a-docker-image-on-a-remote-registry
直接访问:https://mcr.microsoft.com/v2/dotnet/core/runtime/tags/list即可
参考此issue:
.NET 5.0 repository rename announcement.
新的URL为:https://mcr.microsoft.com/v2/dotnet/runtime/tags/list
其它的sdk、aspnet同理
引言使用CommandLineUtils可以创建便捷的dotnet tool工具,官方的docs / samples /中包含有很多示例;但是对于如何运行Command却没有明示,如果你要单元测试自己创建的命令,要到test目录下参考官方的单元测试代码,以下列出自己实践的方法.
解决办法
对于不使用依赖注入的Command,直接使用CommandLineApplication.Execute<Show>("-a");即可,其中Show为[Command("show", Description = "")]
对于使用依赖注入的Command可以参考这个示例
12345678910111213141516var commandLineApplication = new CommandLineApplication<Show>();var services = new ServiceCollection() .AddLogging() .AddSingleton(Program.Configur ...
解决办法
返回0
参考官方文档Reference to system variables和The TOTALPAGES variable always returns 0.,如果Report.GetVariableValue("TotalPages")总是返回0,那你应该在Report→Options中设置Double Pass
返回1
方法如果总是返回1,那你应该在取值上下文中取消Reset Page Number选项
引言Fastreport自带设计器的代码编辑功能非常糟糕,如果你写了很多逻辑在frx文件里面,你几乎无法debug调试,唯有使用MessageBox.Show()方法查看变量的值,而如果你要查看一个循环中的值。。。
解决办法Fastreport的frx文件提供有导出为C#代码的功能,使用visual studio执行C#代码即可解决调试难的问题
步骤打开frx文件,选择file→Save As→保存类型→C#file
生成的文件可能有错误,删除无效的引用后一般就可以编译通过了
在控制台中使用以下代码
1234567891011121314//using FastReport;var reportCtrl = new frx();//frx保存的c#类//设置报表参数foreach (var item in paramsDic.Keys){ reportCtrl.SetParameterValue(item, paramsDic[item]);}//注册报表数据源reportCtrl.RegisterData(dataByte);reportCtrl.Show ...
引言Fastreport默认使用[]标识变量及表达式,如果你显示的文本中有方括号就会报错
12345678910111213141516171819FastReport.TextObjectBase.CalcAndFormatExpression(String expression,Int32 expressionIndex)FastReport.TextObject.GetData()FastReport.BandBase.GetData()FastReport.Engine.ReportEngine.PrepareBand(BandBase band, Boolean getData) FastReport.Engine.ReportEngine.ShowBandToPreparedPages(BandBase band, Boolean getData)FastReport.Engine.ReportEngine.ShowBand(BandBase band, Boolean getData)FastReport.Engine.ReportEngine.ShowD ...
