代码改变世界

去掉VS2005中水晶报表的登录界面

2006-04-21 09:42 菌哥 阅读(...) 评论(...) 编辑 收藏
      在CSDN中经常有朋友问在ASP.NET下用水晶报表的网站会出现水晶报表的登录界面,我来用实例说明如何去掉这个界面(PULL模式)
      首先,为了登录方便,将数据库的用户名和密码先写到Web.config中:
<appSettings>
    <add key="DBServerName" value="你的数据库服务器" />
    <add key="DBUserID" value="sa" />
    <add key="DBPassWord" value="UU1Tc3lzdGVt" />
</appSettings>

     然后写个类来统一验证登录
using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;

namespace BLL
{
    
public class LoginCrystalReport
    
{        
        
public void Login( CrystalDecisions.CrystalReports.Engine.ReportDocument report)
        
{
            
string serverName=ConfigurationManager.AppSettings["DBServerName"];
            
string userId = ConfigurationManager.AppSettings["DBUserID"];

            
string passWord=ConfigurationManager.AppSettings["DBPassWord"];
           
            
//Set Database Logon to main report
            foreach (CrystalDecisions.Shared.IConnectionInfo connection in report.DataSourceConnections)
            
{
                
if (connection.ServerName == serverName)
                
{
                    connection.SetLogon(userId, passWord);
                }

            }


            
//Set Database Logon to subreport
            foreach (CrystalDecisions.CrystalReports.Engine.ReportDocument subreport in report.Subreports)
            
{
                
foreach (CrystalDecisions.Shared.IConnectionInfo connection in subreport.DataSourceConnections)
                
{
                    
if (connection.ServerName == serverName)
                    
{
                        connection.SetLogon(userId, passWord);
                    }

                }

            }

        }


       
    }

}


       现在准备工作已经做好了,下面开始制作水晶报表.对于如何设计水晶报表我在这里就不讲了.
报表做好后,新建一个WEB页,先拖一个水晶报表查看器,再拖一个水晶报表数据源,这些在VS2005的工具箱中都有,然后将查看器的数据源设置成刚才拖进来的水晶报表数据源,再将水晶报表数据源的数据源设置成刚才完成好的报表,这时候切换到代码,开始编写代码:
protected override void OnInit(EventArgs e)
    
{
        
base.OnInit(e);
        BLL.LoginCrystalReport logCR 
= new BLL.LoginCrystalReport();
        logCR.Login(
this.CrystalReportSource1.ReportDocument);
        
    }

      OK,运行一下,发现登录界面没有了,水晶报表出来了.
      还想说明一点,Web.config文件中敏感信息的加密要由你自己完成.
      我打算写一些关于VS2005下水晶报表的系列文章,毕竟园子里关于水晶报表的不多,请弟兄们多多支持!