当前位置: 首页 > news >正文

佛山正规网站建设报价我要下载百度

佛山正规网站建设报价,我要下载百度,贵州公司网站建设比选公示,wordpress菜单不现实一.概述 对基于B/S架构的应用程序而言#xff0c;客户端的页面打印一直是比较头疼的问题#xff0c;简单的做法是#xff1a;1.使用IE的打印功能#xff1b;2.使用水晶报表。但以上两种办法#xff0c;都有很大的局限性#xff0c;很难实现特殊要求的排版和精确的定位客户端的页面打印一直是比较头疼的问题简单的做法是1.使用IE的打印功能2.使用水晶报表。但以上两种办法都有很大的局限性很难实现特殊要求的排版和精确的定位所以不能满足一些特殊客户的BT要求。为此本人总结了自己在使用Web打印上的一点经验和大家分享。   本文涉及以下技术javascript、ActiveX、ASP.NET、GDI。 二.基本架构   首先我们不能使用IE的打印功能必须自己设计‘打印’按钮。很多人习惯将‘打印’按钮放在要打印的页面上打印时为了不把这个按钮打印出来采用办法如下1.打印前隐藏按钮2.打印3.显示按钮。 我觉得这样比较麻烦所以我采用框架。一共有三个页面 1.main.htm :框架页面上面是打印按钮下面是要显示的页面。 2.header.htm :标题栏至少包含一个打印按钮。 3.report.aspx :要打印的页面由用户生成。 //main.htm html  head   title/title    /head    frameset rows10%,90% frameborder0 border0 frameSpacing0   frame idheader nameheader srcHeader.htm noresize scrollingno   frame idreport namereport srcReport.aspx noresize scrollingauto  /frameset  /html //header.htm html  head     script idclientEventHandlersJS languagejavascript   !--   function btnPrint_onclick()   {         parent.report.focus();      parent.report.print();     }   //--   /script  /head  body    INPUT idbtnPrint typebutton valuePrint namePrint οnclickreturn btnPrint_onclick()    /body /html   这样在点击‘打印’按钮时将直接打印report.aspx页面的内容既简单又直观。 三.打印  要完全控制打印就必须由程序设定页眉、页脚、页边距。每个客户端的IE设置都不尽相同你可以要求你的客户修改他们的打印设置为你指定的值显然这不现实。所以正确的做法是 1.备份客户打印页面设置; 2.设置页眉页脚上下左右边距为自己需要的值; 3.打印; 4.恢复原来的打印页面设置。  这里用到一个叫ScriptX的控件。你需要下载一个文件smsx.cab下载地址http://www.meadroid.com/scriptx/sxdownload.asp。这个地址并不能保证长期有效你可以在搜索引擎上搜索‘ScriptX’以获得更多相关信息。 在“header.htm”中增加该控件的引用 OBJECT idfactory styleDISPLAY: none codeBasehttp://localhost/WebApplication1/smsx.cab#VVersion6,3,434,12  classidclsid:1663ed61-23eb-11d2-b92f-008048fdd814 viewastext /OBJECT 注意CodeBase指向你的实际存放文件的位置在客户端第一次浏览该页面时将下载并安装该控件请确定客户端的安全设置允许安装控件。 那么此时 header.htm 的内容如下。 //header.htm html head  script idclientEventHandlersJS languagejavascript  !--  function btnPrint_onclick()  {   //备份客户打印机设置    var h factory.printing.header;    var f factory.printing.footer;    var t factory.printing.topMargin;    var b factory.printing.bottomMargin;    var l factory.printing.leftMargin;    var r factory.printing.rightMargin;      //设置页眉页脚上下左右边距     factory.printing.header ;     factory.printing.footer ;     factory.printing.topMargin0;    factory.printing.bottomMargin0;    factory.printing.leftMargin0;    factory.printing.rightMargin0;      //打印    parent.report.focus();    parent.report.print()      //恢复原来的打印设置    factory.printing.header h;    factory.printing.footer f;     factory.printing.topMargint;    factory.printing.bottomMarginb;    factory.printing.leftMarginl;    factory.printing.rightMarginr;   }  //--  /script    OBJECT idfactory styleDISPLAY: none codeBasehttp://localhost/WebApplication1/smsx.cab#VVersion6,3,434,12   classidclsid:1663ed61-23eb-11d2-b92f-008048fdd814 viewastext  /OBJECT /head body bgColor#9999cc  INPUT idbtnPrint typebutton valuePrint namePrint οnclickreturn btnPrint_onclick()    /body /html   此时不管客户端IE设置如何都能正确打印页面打印内容将完全取决于页面report.aspx。 四.动态页面生成 1. 如果你的页面是静态页面或者页面元素为固定数量那就非常简单了。只要调整好各个元素位置就行了绝对所见即所得。要注意的是一个A4纸的大小为21cm×29.7cm对应象素大约为 794×1123 (系统分辨率96DPI) 。 2.如果你要生成一些图表可以使用GDI你自己绘制的图片绝对能满足客户需求。下面给一个例子我在页面放一个Label一个Image。Image动态生成调整其位置使其打印时出现在第二页的左上角。  1public class Report : System.Web.UI.Page 2 { 3  protected System.Web.UI.WebControls.Image Image1; 4  protected System.Web.UI.WebControls.Label Label1; 5  6  Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码 7  override protected void OnInit(EventArgs e) 8  {    9   InitializeComponent();10   base.OnInit(e);11  }12  private void InitializeComponent()13  {    14   this.Load  new System.EventHandler(this.Page_Load);15  }16  #endregion1718  private void Page_Load(object sender, System.EventArgs e)19  {   20   if(!Page.IsPostBack)21   {22    InitImage();23   }24  }2526  private void InitImage()27  {28   Bitmap bmp  new Bitmap(800,1120);29   Graphics g   Graphics.FromImage(bmp);3031   g.FillRectangle(Brushes.Gray,0,0,800,1120);3233   g.FillRectangle(Brushes.RoyalBlue,0,0,100,600);34   g.FillRectangle(Brushes.Aqua,600,0,100,600);35   g.FillRectangle(Brushes.Coral,700,0,100,600); 36 37   g.FillRectangle(Brushes.YellowGreen,0,800,800,100);38   g.FillRectangle(Brushes.Beige,0,900,800,100);39   g.FillRectangle(Brushes.SkyBlue,0,1000,800,100);40   g.FillRectangle(Brushes.Tomato,0,1100,800,20);4142   string filename  Server.MapPath(TempImages\\img1.jpg);   4344   bmp.Save(filename, System.Drawing.Imaging.ImageFormat.Jpeg);4546   this.Label1.Text  filename;47   this.Image1.ImageUrl  filename;48   this.Image1.Attributes[style]POSITION: absolute; LEFT: 0cm;  TOP: 29.7cm; //定位49  }  50 }5152 注意要保证存放图片的目录有写权限。 3.以上技术只适合于页面元素为固定数量的情况对于页面内容大小不定的情况例如要打印一份人员信息的清单人员数量为11000不等每页显示20条记录要有规定的页眉、页脚此时该如何处理。   思路ASP.NET页面都有一个基类System.Web.UI.Page该类有一个保护方法叫void Render(HtmlTextWriter writer)就是通过这个方法ASP.NET在后台把WEB服务器端控件的属性转换成HTML代码并发送到客户端供浏览器显示。我们的办法就是“劫持”该方法完全手工生成所需页面标记代码。 先看一个例子  public class FrmRYInfo : System.Web.UI.Page  {   private void Page_Load(object sender, System.EventArgs e)   {      }   protected override void Render(HtmlTextWriter writer)   {    writer.Write(HTML);    writer.Write(body);     writer.Write(h1Hello,world!/h1);      writer.Write(/body);    writer.Write(/html);   }  }   编译并运行以上程序可以看到一行一号字体的Hello,world!,查看页面源文件内容如下  HTMLbodyh1Hello,world!/h1/body/html   对照上面代码应该非常好理解下面我们就做一个实际的例子将信息从数据库读出显示在页面上每页显示15条记录。  protected override void Render(HtmlTextWriter writer)  {   writer.Write(HTML);   writer.Write(body);     DataTable tabRY  GetCustomerInfo(); //读取数据库   int Lines  15;    //每页行数   int Count  tabRY.Rows.Count;   int TotalPage  Count/Lines  (Count%Lines0?0:1);   for(int CurrentPage 0; CurrentPageTotalPage; CurrentPage)   {    int StartRow  CurrentPage * Lines;    int EndRow  StartRow  Lines;    if(EndRow  Count) EndRow  Count;    ProcessCurrentPage(writer,tabRY,StartRow,EndRow,CurrentPage,TotalPage);   }     writer.Write(/body);   writer.Write(/html);  }  private void ProcessCurrentPage(HtmlTextWriter writer, DataTable tabRY, int StartRow, int EndRow, int CurrentPage, int TotalPage)  {   if(CurrentPage ! 0)   {    writer.Write(p  stylepage-break-before:always/p);              }      writer.Write(table  width630 height417 border0);   writer.Write( tr);   writer.Write(  td width624 height47div aligncenter  stylefont-size:24px人员信息汇总表/div/td);   writer.Write(  /tr);   writer.Write(  tr);   writer.Write(  td height222);   writer.Write(   table width623  border1 cellpadding0 cellspacing0);   writer.Write(   tr);   writer.Write(    td width134div aligncenter姓名/div/td);   writer.Write(    td width134div aligncenter编号/div/td);   writer.Write(    td width134div aligncenter电话/div/td);   writer.Write(    td width134div aligncenter小灵通/div/td);            writer.Write(   /tr);  for(int iStartRow; iEndRow; i)  {    DataRow row  tabRY.Rows[i];   string XM  row[MC].ToString();   string BH  row[BH].ToString();   string DH  row[LXDH].ToString();if(DH.Length0)DH-;   string XLT   row[XLT].ToString();   writer.Write(   tr);   writer.Write(    td width134div aligncenter  XM  /div/td);   writer.Write(    td width134div aligncenter  BH  /div/td);   writer.Write(    td width134div aligncenter  DH  /div/td);   writer.Write(    td width134div aligncenter  XLT  /div/td);            writer.Write(   /tr);  }   writer.Write(   /table);   writer.Write(  /td);   writer.Write(  /tr);   writer.Write(  tr);   writer.Write(  td height37div alignright第  (CurrentPage1).ToString() 页共  TotalPage.ToString()  页/div/td);   writer.Write(  /tr);   writer.Write(/table);  } 感觉又回到了用记事本做网页的年代手工生成HTML代码是不是真正叫“随心所欲”。 几点说明 (1)在每一页除了第一页的头部加入 writer.Write(p  stylepage-break-before:always/p); 目的是控制在打印时打印机在此换页。这里通过强制打印机换页来实现页面的布局与上面的绝对定位的办法不同。该标记只影响打印不影响显示。 (2)用记事本做网页绝对很痛苦而且HTML标记也很不好用我的办法是用Dreamweaver生成需要的页面再参照其HTML代码进行编程。 (3)尽量使用HtmlTextWriter类提供的一些其它方法如WriteBeginTag等取代Write方法这样可以提高页面在客户端的兼容性。同时在每个标记后加入writer.WriteLine();进行换行以便于调试。 转载于:https://www.cnblogs.com/Aioria0622/archive/2007/12/03/981434.html
http://wiki.neutronadmin.com/news/173141/

相关文章:

  • 网站优化的主要内容品牌设计公司排行榜
  • 如何建立竞价网站烟台网站优化公司
  • 响应式网站什么意思小程序店铺怎么弄
  • 动态手机网站wordpress 电话
  • 个人网站建设第一步专业北京网站建设公司哪家好
  • 微信端微网站怎么做wordpress the 7
  • 旅游网站建设注册网页设计及制作方法
  • 网站维护中模版高端网站制作建设
  • 建网站服务器用什么个人介绍网页模板免费下载
  • 班级网站怎么做ppt企业网络推广分析
  • 17zwd一起做网站广州新塘旅游网站建设规划报告怎么写
  • 自己做的产品在哪个网站上可从卖深圳企业登记注册
  • 网站建设亿玛酷技术动漫制作软件
  • 单位网站等级保护必须做吗从零开始做电影网站
  • 网站建设丷金手指专业十五个人域名怎么做社交网站
  • 知知网站推荐wordpress主题市场
  • 辽宁高端网站建设土建找工作去哪个网站
  • 葫芦岛网站建设找思路建设银行通控件网站
  • 查询网站是否过期星子网今天最新新闻
  • 网站开发培训设计企业数字化管理
  • 博客推广那个网站列好做优秀企业网站
  • 资讯类网站源码wordpress 配置ftp
  • 自学网站建设要看什么书农资网络销售平台
  • 玉溪市网站建设如何学习wordpress
  • 微信网站开发用什么语言怎样建设企业网站 用于宣传
  • 网站开发技术岗位职责wordpress 忘记用户名密码破解
  • 咨询网站公司建设计划书如何做某网站的移动客户端开发
  • 信息可视化网站提供免费建网站的网
  • 网站建设的功能特点有哪些网站开发学什么数据库
  • 灵璧做网站的公司安徽省建设安全协会网站