你指的多源是什么意思c#中reportviewer是个报表呈现控件,真正控制数据源的是rdlc数据报表,rdlc的数据源可以是微软提倡的任意可以作为datasouce的数据源的数据对象:如下ObjectDataSource 
 使您能够处理业务对象或其他类,并创建依赖于中间层对象来管理数据的 Web 应用程序。有关更多信息,请参见 ObjectDataSource Web 服务器控件。
 
SqlDataSource 
 使您能够处理 ADO.NET 托管数据提供程序,该提供程序提供对 Microsoft SQL Server、OLE DB、ODBC 或 Oracle 数据库的访问。有关更多信息,请参见 SqlDataSource Web 服务器控件。
 
AccessDataSource 
 使您能够处理 Microsoft Access 数据库。有关更多信息,请参见 AccessDataSource Web 服务器控件。
 
XmlDataSource 
 使您能够处理 XML 文件,该 XML 文件对诸如 TreeView 或 Menu 控件等分层 ASP.NET 服务器控件极为有用。 有关更多信息,请参见 XmlDataSource Web 服务器控件。
 
SiteMapDataSource 
 与 ASP.NET 站点导航结合使用。有关更多信息,请参见 ASP.NET 站点导航概述。
 

解决方案 »

  1.   

    下面是个简单的例子。protected void Page_Load(object sender, EventArgs e)
        {
            string connStr = ConfigurationSettings.AppSettings["lj"].ToString();
            SqlDataSource datasource = new SqlDataSource(connStr, "select * from yang");
            ReportDocument doc = new ReportDocument();
            TableLogOnInfo logininfo = new TableLogOnInfo();
            string path;
            
            path = Server.MapPath("report1.rpt");
            doc.Load(path);
            //强制连接数据库,A B C D是在WEB.CONFIG获取来的
            string a, b, c, d;
            a = System.Configuration.ConfigurationManager.AppSettings[0];
            b = System.Configuration.ConfigurationManager.AppSettings[1];
            c = System.Configuration.ConfigurationManager.AppSettings[2];
            d = System.Configuration.ConfigurationManager.AppSettings[3];
            logininfo.ConnectionInfo.ServerName = a;
            logininfo.ConnectionInfo.DatabaseName = b;
            logininfo.ConnectionInfo.UserID = c;
            logininfo.ConnectionInfo.Password = d;        try
            {
                doc.Database.Tables[0].ApplyLogOnInfo(logininfo);
                doc.Database.Tables[0].SetDataSource(datasource.Select(DataSourceSelectArguments.Empty));
                CrystalReportViewer1.ReportSource = doc;
            }
            catch
            {
                Response.Write("<script>alert('输出报表失败,请检查输入信息或网络!');</script>");
            }    }
      

  2.   

    二楼的大大,我说的正是rdlc,我想问的就是rdlc是否能支持两个数据源,比如说两个以上的存储过程?
      

  3.   

    你所指的支持2个数据源,如果是同一张表中的数据来自2个不同数据源是不行的
    但是如果一个rdlc有2张表,那么这2张表可以分别指定数据源的
    当你在窗体设计器中将reportviewer放入窗体时通过智能面板指定你设计的有多个数据源和多个数据表的rdlc时
    会为你自动生成与之对应的bindingsouce你之需要为这些不同的bindingsouce绑定数据就ok了