CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

两个问题,大家帮我支支招

楼主jjkk168(老加班的人--好好学习,天天吃饭)2005-04-03 00:10:21 在 .NET技术 / C# 提问

问题一:我设计出窗体,但窗体中的内容需要进行打印,如何打印窗体(注:窗体打印可能会根据窗体内容不同而显示不同的打印,比如说某一个ComboBox选择不同的内容,与之相关的某些TEXTBOX会设其Enable属性为false,而打印时不需要显示出该内容)。我唯一想到的是使用报表设计器,大家帮我想想哪一个报表设计器能够将窗体数据传输到打印中。  
   
  问题二:我想在Web中实现读取本地数据,比如说某Client端有一个数据库,我需要在不下载任何组件的情况下,将数据库里面的内容根据自己配置的SQL语句读出,并且将其记录返回到SERVER端。如何实现?谢谢! 问题点数:100、回复次数:19Top

1 楼roibin(花菜)回复于 2005-04-03 01:27:32 得分 0

UP!Top

2 楼athossmth(athos)回复于 2005-04-03 03:16:23 得分 20

一、flygoldfish的技术(goldprinter.dll的代码我用reflector看了一下)也就那么回事,真的想掌握一个打印工具,可以看这两篇文章,非常有价值:  
   
  http://www.microsoft.com/china/community/Column/65.mspx  
  利用XML实现通用WEB报表打印  
  卢彦  
   
  http://www.microsoft.com/china/community/program/originalarticles/TechDoc/WSE_Print.mspx   讨论创建基于WSE的报表打印服务及其实现  
  作者:林焯      
   
  二、fso上传  
  或者xmlhttp上传  
  或者使用ActiveX控件,使得用户远程操作数据库文件。参考:《如何在Web页面上直接打开、编辑、创建Office文档   》http://blog.joycode.com/kaneboy/archive/2004/11/03/37889.aspx  
   限制:  
   A、Server端直接操作Browser上的文件,Browser端需要配置相应权限  
   B、Server端需要安装office   xp   sp3以上或者自行注册office的activex控件"owssupp.dll"  
  或者vpn  
  或者……Top

3 楼dutguoyi(新鲜鱼排)回复于 2005-04-03 09:12:14 得分 2

不懂,帮顶Top

4 楼CrazyDeng(DengWei)回复于 2005-04-03 09:28:21 得分 2

学习,帮顶!!Top

5 楼jjkk168(老加班的人--好好学习,天天吃饭)回复于 2005-04-03 22:02:15 得分 0

TO   athossmth(athos)  
   
  第一个问题我现在还没有怎么仔细考虑使用B/S结构的程序,客户端使用的仍然是一些DLL,窗体也就是基本的WINDOWS窗体。想要设计打印如果要采用这种WEB方式的似乎有点偏了(我的感觉)。我是一名新手,这方面不太懂,还请多指教。  
   
  第二个问题  
  1采取上传的方式似乎不太好实现,假如是SQL   Server或者是Oracle等数据库,非文件型的,那怎么上传啊?  
  2再就是要求客户端装了OFFICE2003,这个条件似乎有点苛刻,还有简便一点的方法没?  
   
  谢谢!Top

6 楼saintqiqi(钻石星辰(www.saintzone.net))回复于 2005-04-03 23:21:12 得分 2

学习,帮顶!!Top

7 楼gyf19(秋天的云)回复于 2005-04-04 00:24:31 得分 2

接分,UPTop

8 楼yuanarea(Sail before)回复于 2005-04-04 02:57:11 得分 12

问题复杂,关注~~~  
   
  又大概看了一下   第二个问题可以用XML可是传输数据;第一个问题可以动态创建控件;UPTop

9 楼jjkk168(老加班的人--好好学习,天天吃饭)回复于 2005-04-04 09:37:58 得分 0

俺知道问题复杂了一点。但真不知道该怎么处理了。  
   
  我自己的想法仅只是这样  
   
  第一个问题:如果有一个报表设计器,通过什么位置,比如说宏或者Verbs里面点击打开一个报表设计器的界面,能够导出所编辑窗口的所有控件(这些控件倒还好办,控件的使用都是俺规定死了的),设置好位置之后再进行保存(主要原因是我想保存在程序内部,不知道可不可行)。保存好后,在运行的时候通过什么方式将窗体中的数据读出来,再往报表里面写,然后就可以实现打印了。这里面确实被我想得够复杂,但也想不出什么简单的办法了。需要打印的窗体太多,总不至于一个个地去用PrintDocument来画吧,不太现实。  
   
  第二个问题:我觉得我的问题怎么着也有点说不过去,试想,如果能够读取出数据库里面的内容,那肯定是需要曝光说IE有漏洞了。但这样对于客户来讲,操作太简单了,客户机不需要安装什么软件,只要在WEB页面上点击或者输入,就可以将相关的信息上报,那样不占资源,并且效率肯定会好一点(肯定会好一点,至少客户机里面没有自己写的上传程序占着内存)。我不知道在Web里面使用ActiveX效果会怎么样?会不会被一些什么程序给挡了,或者存在什么其他的问题。  
   
   
  敬请各位帮我支支招吧,想得头破血流了。Top

10 楼pingnt(淡蓝色的雪)回复于 2005-04-04 09:48:23 得分 2

顶一下.Top

11 楼jjkk168(老加班的人--好好学习,天天吃饭)回复于 2005-04-04 15:52:34 得分 0

自己再UP一下,急啊Top

12 楼lyzo144(jkiii-抵制日货)回复于 2005-04-04 16:17:45 得分 50

System.Drawing.Printing.PrintDocument   doc1   =   new   System.Drawing.Printing.PrintDocument();  
  doc1.PrinterSettings.Copies=Convert.ToInt16(dbBandS);  
  doc1.PrinterSettings.PrinterName=PrintM1;  
   
  doc1.PrintPage   +=   new   System.Drawing   .Printing   .PrintPageEventHandler(   Doc_PrintPage);  
   
  print.Document   =   doc1;  
  ////打印  
   
   
  doc1.Print();  
   
   
  private   void   Document_PrintPage(object   sender,   System.Drawing.Printing.PrintPageEventArgs   e)  
  {  
  RectangleF   srcRect   =   new   RectangleF(0,0,110,90);  
  RectangleF   destRect   =   new   RectangleF(0,0,330,270);  
   
  GraphicsContainer containerState   =   e.Graphics.BeginContainer(destRect,   srcRect,  
  GraphicsUnit.Millimeter);  
  Graphics   g   =   e.Graphics;   //获得绘图对象  
   
   
  foreach   (Control   c   in   panel10.Controls)  
  {  
   
  //     Get   the   time   of   the   next   control   so   we   can   unbox   it  
  string   strType   =   c.GetType().ToString().Substring(c.GetType().ToString().LastIndexOf(".")   +   1);  
  // MessageBox.Show(strType);  
  switch   (strType)  
  {  
   
  case   "RadioButton":  
  {  
  RadioButton   t=(RadioButton)c;  
   
   
  if(t.Checked==true)  
  {  
  ControlPaint.DrawRadioButton(g,t.Left-20,   t.Top+5,   t.Width/2+5,   t.Height/2+5,   ButtonState.Checked);  
  g.DrawString(t.Text,   t.Font,   new   SolidBrush(System.Drawing.Color.Black),   t.Left+20,    
  t.Top   +   t.Height/2   -   g.MeasureString("a",t.Font).Height/2,   new   StringFormat());  
  }  
  else  
  {  
  ControlPaint.DrawRadioButton(g,t.Left-20,   t.Top+5,   t.Width/2+5,   t.Height/2+5,   ButtonState.Pushed);  
  g.DrawString(t.Text,   t.Font,   new   SolidBrush(System.Drawing.Color.Black),   t.Left+20,    
  t.Top   +   t.Height/2   -   g.MeasureString("a",   t.Font).Height/2,   new   StringFormat());  
  }  
  }  
   
  break;  
  case   "Label":  
  Label   l=(Label)c;  
  //MessageBox.Show(l.Font.ToString   ());  
   
  g.DrawString(l.Text,   l.Font,   new   SolidBrush(System.Drawing.Color.Black),   l.Left+25,    
  l.Top   +   l.Height/2   -   g.MeasureString("a",   l.Font).Height/2,   new   StringFormat());  
  break;  
   
  }  
  }  
  }Top

13 楼lyzo144(jkiii-抵制日货)回复于 2005-04-04 16:21:32 得分 2

第一个是调用打印的,没什么,第二个类是对窗体的,很好用,case就能把出现的控件画出来,暂时只传了textbox,Label,RadioButton,其他自己模仿琢磨吧!Top

14 楼conan19771130(残疾人程序员,学习第2门外语)回复于 2005-04-04 16:49:32 得分 2

水晶报表不行吗?Top

15 楼jjkk168(老加班的人--好好学习,天天吃饭)回复于 2005-04-04 22:40:21 得分 0

感谢   lyzo144(jkiii-抵制日货)    
   
  是解决了部分问题。但老问题同样存在,就是那些需要自己设定的打印页面,比如说在某些情况下某些字段不显示出来,某些列不显示出来等。  
   
  再还存在一个问题,就是当存在网格时,如果网格列太宽了,就会超出页面。我如何在别外一页补上没有打印完的列?  
   
   
  TO   conan19771130(柯南)  
  我试过水晶报表,似乎没有我想要的效果。我都想晕了都不知道怎么将网格里面的内容(可能存在不同行)怎么加进水晶报表,但每次失败,不知道是我代码写的不对还是本身就有缺陷。  
   
  据我所知,水晶报表要不就干脆就是静态页面,要不就与数据库直连,这样很方便,但如果想动态在里面加上某个字段,或者动态加入一行,似乎达不到这个效果。  
   
  Top

16 楼tttick(秉承一贯懒散的生活方式与严谨的工作态度¢)CodinG)回复于 2005-04-05 00:39:16 得分 2

学习了。。。upTop

17 楼xlkg_ss(我想学习)回复于 2005-04-05 08:56:55 得分 2

hao,upupTop

18 楼jjkk168(老加班的人--好好学习,天天吃饭)回复于 2005-04-06 01:02:40 得分 0

再顶一下!!Top

19 楼jjkk168(老加班的人--好好学习,天天吃饭)回复于 2005-04-06 11:16:06 得分 0

对于第一个问题,我想来想去,想到一个解决的办法,就是利用表格进行设计(反正需要导出为EXCEL的,一举两得)  
   
  就是将界面相关信息保存到DATASET或者XML中,然后再对表格进行设计,打印或导出的时候再对数据进行重画,不知道这样是否可行?Top

相关问题

  • ----------我中招了,请大家帮忙!--------
  • 中招了,帮忙
  • 我中招了
  • 教我几招。。。。
  • 请各位经验丰富的高手帮忙教两招
  • 我的电脑中招了大家快来帮忙
  • 我的机器中招了,请各位高手帮忙!!!!!!!!!!!!!!!!!!!!!!!!11
  • 追女孩子,大家快帮我支招,郁闷中。。。。。。
  • 大家帮我出个招,这个SQL语句该怎么写
  • 想辞职,北京的兄弟姐妹们帮我出出招

关键词

  • 打印
  • 报表
  • 控件
  • 数据库
  • 网格
  • 页面
  • 水晶报表
  • 数据
  • 内容
  • 文件

得分解答快速导航

  • 帖主:jjkk168
  • athossmth
  • dutguoyi
  • CrazyDeng
  • saintqiqi
  • gyf19
  • yuanarea
  • pingnt
  • lyzo144
  • lyzo144
  • conan19771130
  • tttick
  • xlkg_ss

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo