我自己做的小系统,因为有些报表需要打印,但是网上找了很多都不是很满意。有没有哪种打印控件可以实现定制打印的呢,就是指定打印页面上哪些内容。有没有御览无所谓。我找过
<OBJECT id=wb height=0 width=0
classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 name=wb></OBJECT> 这个在vs里面一编译就会加很多代码,点击打印页没有反应,看之前的帖子说没法解决。我希望能用服务器代码解决,因为对javascript实在不熟。实在不行能解决也可以。分不够尽管要,我可以在加。
<OBJECT id=wb height=0 width=0
classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 name=wb></OBJECT> 这个在vs里面一编译就会加很多代码,点击打印页没有反应,看之前的帖子说没法解决。我希望能用服务器代码解决,因为对javascript实在不熟。实在不行能解决也可以。分不够尽管要,我可以在加。
解决方案 »
- 如何用div写首页的导航下拉菜单?在线等阿
- 为什么Encrypt方法最多支持117个字节而不是128个字节?
- 求SQL语句----------(在线等)
- 在删除内容的时候如何或得相关信息 写入日志文件
- ajaxpanel中的文件上传问题
- 这两个类的关系是什么?
- 请教在写一个Web自定义控件时,怎么给BackColor这些属性赋初值?
- 新手提问-datagrid和子页面向父页面中传递数据及其如何触发事件得问题!!!!
- 大家都来说说自己的看法:对于客户端运行的程序,asp.net的机制是怎样的.
- 参与asp.net项目开发的过来人,你们的开发过程是怎样的???
- 数据库查询参数出错.....必须声明变量
- 菜鸟请问各位高手,根据ROWSTATE判断DATATABLE的DATAROW状态为什么不管用?
{
mypage.Response.Clear();
mypage.Response.Buffer= true;
mypage.Response.Charset="gb2312";
mypage.Response.AppendHeader("Content-Disposition","attachment;filename=FileFlow.xls");
mypage.Response.ContentEncoding=System.Text.Encoding.GetEncoding("gb2312");
mypage.Response.ContentType = "application/ms-excel"; mypage.EnableViewState = false;
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
foreach (Control c in mypage.Controls)
{
foreach (Control childc in c.Controls)
{
if (childc is Label)
{
childc.RenderControl(oHtmlTextWriter);
}
if (childc is DataGrid)
{
childc.RenderControl(oHtmlTextWriter);
}
}
} mypage.Response.Write(oStringWriter.ToString()); mypage.Response.End();
} 顺便问一下,我之前用过这样的函数打印到excel,以前是可以的,现在不知道怎么回事执行总是有问题。这个有问题吗。
用js 吧,直接调用ie print方法应该可以!
第一步
写一个方法: public void Myprint()
{
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF7;
Response.AppendHeader("Content-Disposition", "attachment;filename=" +HttpUtility.UrlEncode("XXX.xls", System.Text.Encoding.UTF8).ToString());
Response.ContentType = "application/ms-excel";
this.EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
this.GridView1.RenderControl(hw);
Response.Write(tw.ToString());
Response.End();
}
上面的Gridview是数据显示控件,当然也可以用其他数据控件
另外 还必须重写一个方法(否则会报错'Gridview必须有runat=server标记'): public override void VerifyRenderingInServerForm(Control control)
{ }
function preview()
{
bdhtml=window.document.body.innerHTML;
sprnstr="<!--startprint-->";
eprnstr="<!--endprint-->";
prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17);
prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));
window.document.body.innerHTML=prnhtml;
window.print();
}
</script>想打哪部分就把哪部分用<!--startprint-->和<!--endprint-->包起来例如想打页面上的一个table里的东西
:
<!--startprint-->
<table>
..............
</table>
<!--endprint-->
//添加样式,指定打印。
<!--media=print 这个属性可以在打印时有效-->
<style media=print>
.Noprint{display:none;}
.PageNext{page-break-after: always;}
</style> //指定非打印区域
<div id="div1" class="Noprint" >
<OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0>
</OBJECT>
<input type=button value="打印" onclick="document.all.WebBrowser.ExecWB(6,1);">
</div><table >
...//打印
</table>
1. <object id="WebBrowser" width=0 height=0 classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"> </object>
2. 调用方法。
WebBrowser.ExecWB nCmdID, nCmdExecOpt, [pvaIn], [pvaOut]
3. 参数说明。
(a).nCmdID
OLECMDID_OPEN = 1,
OLECMDID_NEW = 2,
OLECMDID_SAVE = 3,
OLECMDID_SAVEAS = 4,
OLECMDID_SAVECOPYAS = 5,
OLECMDID_PRINT = 6,
OLECMDID_PRINTPREVIEW = 7,
OLECMDID_PAGESETUP = 8,
OLECMDID_SPELL = 9,
OLECMDID_PROPERTIES = 10,
OLECMDID_CUT = 11,
OLECMDID_COPY = 12,
OLECMDID_PASTE = 13,
OLECMDID_PASTESPECIAL = 14,
OLECMDID_UNDO = 15,
OLECMDID_REDO = 16,
OLECMDID_SELECTALL = 17,
OLECMDID_CLEARSELECTION = 18,
OLECMDID_ZOOM = 19,
OLECMDID_GETZOOMRANGE = 20
OLECMDID_UPDATECOMMANDS = 21
OLECMDID_REFRESH = 22
OLECMDID_STOP = 23
OLECMDID_HIDETOOLBARS = 24
OLECMDID_SETPROGRESSMAX = 25
OLECMDID_SETPROGRESSPOS = 26
OLECMDID_SETPROGRESSTEXT = 27
OLECMDID_SETTITLE = 28
OLECMDID_SETDOWNLOADSTATE = 29
OLECMDID_STOPDOWNLOAD = 30
上面的关键词都可以在浏览器的菜单里面找到对应的选项﹐大家一看就明白的﹗
(b).nCmdExecOpt
OLECMDEXECOPT_DODEFAULT = 0,
OLECMDEXECOPT_PROMPTUSER = 1,
LECMDEXECOPT_DONTPROMPTUSER = 2,
OLECMDEXECOPT_SHOWHELP = 3
对于这个参数﹐一般来说﹐选1就可以了。 这是调用IE的”另存为”功能的示例﹕ <object id="WebBrowser" width=0 height=0 classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"> </object>
<A href="javascript:WebBrowser.ExecWB(4,1);">Save-存储 </A>