当前位置: 代码迷 >> .NET报表 >> 自定义水晶报表工具栏导出按钮事件WinForm & WebForm版
  详细解决方案

自定义水晶报表工具栏导出按钮事件WinForm & WebForm版

热度:1650   发布时间:2013-02-25 00:00:00.0
【分享】自定义水晶报表工具栏导出按钮事件WinForm & WebForm版
1:WebForm版

这个比较简单,工具栏点击后是一系列js事件在运作,只要我们找到目标文件即可
以VS2008自带版本的水晶报表为例

部署路径
XML code
C:\inetpub\wwwroot\aspnet_client\system_web\2_0_50727\CrystalReportWebFormViewer4\js

或网站的根目录下的同位置

开发路径
XML code
C:\Windows\Microsoft.NET\Framework\v2.0.50727\ASP.NETClientFiles\CrystalReportWebFormViewer4\js

里的Export.js

一个比较常见改法就是删除一些不常用的导出格式或者是描述
如,不允许导出rpt格式,只要把下面这段删除即可

JScript code
if( rpt )        {            list += "<OPTION value=\"CrystalReports\">" + L_CrystalRptFormat + "</OPTION>";        }


2:WinForm版

水晶报表展示控件CrystalReportViewer本身就是一个复合控件,使用下面方法的思路
可以移除(当然,也可以通过设计时的属性来实现),修改现有按钮,添加新的按钮及事件
本例中只是做了个演示,说明能处理自定义事件。
至于要怎么去自定义导出,那么就是自己绘制一个界面来代替原来的导出界面。不是本例的重点。
C# code
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using CrystalDecisions.Shared;using CrystalDecisions.CrystalReports.Engine;using CrystalDecisions.Windows.Forms;namespace CrApp_OLAP2{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        //在Load时触发        private void Form1_Load(object sender, EventArgs e)        {            ReplaceExportButton();        }        //自定义事件        private void myEvent000(object sender, EventArgs e)        {            MessageBox.Show("Here");        }        //核心        private void ReplaceExportButton()        {            //遍历crystalReportViewer1控件里的控件            foreach (object ctl in crystalReportViewer1.Controls)            {                //取得控件名称                string sControl = ctl.GetType().Name.ToString().ToLower();                //取得工具条                if (sControl == "toolstrip")                {                    ToolStrip tab1 = (ToolStrip)ctl;                    //遍历工具条Item                    for (int i = 0; i <= tab1.Items.Count - 1; i++)                    {                        //MessageBox.Show(tab1.Items[i].ToolTipText);                        //如果是导出按钮                        if (tab1.Items[i].ToolTipText == "导出报表")                        {                            //先创建一个ToolStripButton准备替代现有Button                            ToolStripButton tbutton = new ToolStripButton();                            //获取原导出按钮的按钮图片                            Image img1 = tab1.Items[i].Image;                            //移除原导出按钮                            tab1.Items.Remove(tab1.Items[i]);                            //设置新button属性                            tbutton.Image = img1;                            tbutton.ToolTipText = "自定义导出报表按钮";                            //在原位置上插入新Button                            tab1.Items.Insert(0,tbutton);                                                        //绑定自定义事件                            tbutton.Click += new System.EventHandler(this.myEvent000);                            break;                        }                    }                }            }        }    }}



------解决方案--------------------------------------------------------
SF
------解决方案--------------------------------------------------------
謝謝了,阿泰
跟著你,長了不少見識
------解决方案--------------------------------------------------------
  相关解决方案