|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
帮助用户快速实现各种应用服务,ASP商有整合各方面资源的能力,可在短期内为用户提供所需的解决方案。例如,典型的ERP安装,如果要在客户端安装的话需要半年到二年的时间,但是美国的一些ASP商如USI和CORIO能在90—120天内提供ERP应用方案。报表打印|创立|报表打印择要:
看过卢彦师长教师的关于WEB报表打印完成文章的人,必定会为内里所供应的办理计划击节喝采,本文试图给人人展示一个更天真的打印功课流水,并具有必定的有用性。倡议人人在浏览本文之前先浏览卢彦师长教师的两篇文章,同时本文彩用了微软的WSE(1.0)作为帮助工具,对此感应生疏的伴侣,倡议先参考一些观点性的文章,我在文章的最初列了一些参考材料和所需工具,人人可自行体味。
--------------------------------------------------------------------------------
目次
弁言
软件道理
程序完成
注重事项
总结
参考材料
--------------------------------------------------------------------------------
弁言:
WSE供应了一个十分便利的功效,就是撑持附件的传输,只管我们能够接纳其余体例来到达这个目标,好比间接的前往byte型的数据,可是关于年夜多半使用而言,间接前往一个附件,如一张图片更加其实些,请人人不要误解我文章的题目,觉得创立一个WEBSERVICE就能够便利地完成了打印了,我们的软件道理和终极打印的体例跟卢彦师长教师里提到的并没有多年夜区分,我们只是使用了WebService的壮大的穿透性,来使这个体例更加天真,更容易于使用和拓展,本文所接纳的代码全体用C#编写。
--------------------------------------------------------------------------------
软件道理:
本文彩用了XML情势的数据,客户端将必要打印的数据和一些基础的参数,如图像巨细,图像情势等传送给服务器端,而服务器端则依据客户真个请求天生特定的一张或多张图片前往给客户端,由客户真个打印程序一致处置,看了这个逻辑我们就能够发明:一切的营业划定规矩完整在服务器端运做,而客户端只必要大批的代码就能够完成报表的打印。如许就制止了各类晋级所带来的懊恼,当实践使用中请求增添一种或多种图表的时分,我们所必要做的只是增添大概修正服务器真个营业划定规矩,而客户所要做的只是告知我们要打印这类图表就能够了。
本文彩用了一些复杂的XML数据,仅供树模用,客户真个Demo数据以下:
<?xmlversion="1.0"encoding="utf-8"?>
<RootPrintType="line"Width="450"Height="500"Title="PrintDemo">
<ChildText="1"Value="100"Color="Black">
</Child>
<ChildText="2"Value="60"Color="Orange">
</Child>
<ChildText="3"Value="30"Color="Red">
</Child>
<ChildText="4"Value="40"Color="Gray">
</Child>
<ChildText="5"Value="90"Color="Blue">
</Child>
<ChildText="6"Value="60"Color="Green">
</Child>
</Root>
个中PrintType就是客户端请求的打印范例。
程序完成:
服务器端代码
本体系也一样接纳了AbstractFactory的计划形式,以利于服务器端便利的扩大,此处就不再赘述。
新建一个Web服务项目,增加笼统基类,完成类,剖析类,建成后的界面以下所示:
必要到场对Microsoft.Web.Services定名空间的援用
个中
PrintBase.cs是基类
Parser.cs是剖析类
LinePrint.cs是完成详细图像的类
基类代码:
publicclassPrintBase
{
publicPrintBase()
{
//
//TODO:在此处增加机关函数逻辑
//
}
publicvirtualStreamDrawImage()
{
returnnull;
}
}
剖析类代码:
publicclassParser
{
publicParser()
{
//
//TODO:在此处增加机关函数逻辑
//
}
publicstaticPrintBaseCreateElement(DataSetds)
{
PrintBasepb=null;
stringl_strPrintType=ds.Tables["Root"].Rows[0]["PrintType"].ToString();
switch(l_strPrintType)
{
case"line":
pb=newLinePrint(ds);
break;
default:
pb=newPrintBase();
break;
}
returnpb;
}
}
完成类的代码:
因为此处代码较长,我只贴出部分代码供参考,人人能够依据本人的实践情形举行图形的绘制。
///<summary>
///重载画的划定规矩
///</summary>
///<returns>图像Stream</returns>
publicoverrideStreamDrawImage()
{
_ChartSize=newSizeF(float.Parse(ds.Tables["Root"].Rows[0]["Width"].ToString()),
float.Parse(ds.Tables["Root"].Rows[0]["Height"].ToString()));
Bitmapb=newBitmap((int)_ChartSize.Width,(int)_ChartSize.Height,
PixelFormat.Format32bppArgb);
//初始化
_Graphics=Graphics.FromImage(b);
//以下省略,请自行绘制
//存储前往
MemoryStreams=newMemoryStream();
b.Save(s,ImageFormat.Png);
returns;
}
我团体一向对照喜好用DataSet操纵小型的XML数据,人人请按本人喜欢调剂,此处展现的办法将间接供Web服务类挪用。
Web服务类的代码:
[WebMethod]
publicboolCreateImage(DataSetds)
{
booll_bStatus=true;
try
{
PrintBasepb=null;
pb=Parser.CreateElement(ds);
Streams=pb.DrawImage();
SoapContextsc=HttpSoapContext.ResponseContext;
sc.Attachments.Add(newDimeAttachment("image/png",TypeFormatEnum.MediaType,s));
}
catch
{
l_bStatus=false;
}
returnl_bStatus;
}
至此,我们服务器真个代码就基础完成了,上面我们来看客户端所必要做的事情,我在此处创建了一个WinForm工程来做演示用,实践使用中,则接纳卢彦文章里提到的usercontrol就能够了。
客户端代码:
privatevoidbutto</p>减少客户内IT专业人才缺乏带来的影响。ASP的客户员工利用浏览器进入相关的应用软件,简单易用,无需专业技术支持。 |
|