3

我在使用 SSRS 的 ReportViewer 控件的 ASP.NET 版本时遇到问题。

在我的 ASP.NET Web 表单文件中,我有:

    <rsweb:ReportViewer ID="webViewer" runat="server" Width="100%" Height="100%" 
        ProcessingMode="Remote">
        <ServerReport ReportPath="/AnalyticReports/SiteOverview" 
            ReportServerUrl="http://someserver/ssrs" />
    </rsweb:ReportViewer>

正如预期的那样,这工作得很好。

但是,假设我想以编程方式更改服务器和报告路径。我该怎么做?

我试过这个:

webViewer.ServerReport.ReportServerUrl = new Uri("http://someserver/ssrs");
webViewer.ServerReport.ReportPath = "/AnalyticReports/SiteOverview";
webViewer.ServerReport.Refresh();

然而,这似乎并没有做任何事情。我什至尝试添加 webViewer.Reset() 但无济于事。

有人指出我正确的方向吗?

4

4 回答 4

2

我使用将获取和设置值的属性做到了这一点

public string ReportPathString 
{ get { return ReportViewer1.ServerReport.ReportPath; } 
  set { ReportViewer1.ServerReport.ReportPath = value; } 
}

public string ReportServerUrlString 
{ get { return ReportViewer1.ServerReport.ReportServerUrl.ToString(); } 
  set { ReportViewer1.ServerReport.ReportServerUrl = new Uri(value); } 
}

同样在 page_load 时,我使用以下代码设置凭据

IReportServerCredentials irsc = new ReportServerCredentials("Username", "Password", "Domain");

使用的类如下

public class ReportServerCredentials : IReportServerCredentials
{
private string _UserName;
private string _PassWord;
private string _DomainName;

public ReportServerCredentials(string UserName, string PassWord, string DomainName)
{
    _UserName = UserName;
    _PassWord = PassWord;
    _DomainName = DomainName;
}

public System.Security.Principal.WindowsIdentity ImpersonationUser
{
    // use default identity
    get { return null; }
}

public ICredentials NetworkCredentials
{
    // use default identity
    get { return new NetworkCredential(_UserName, _PassWord, _DomainName); }
}

public bool GetFormsCredentials(out Cookie authCookie, out string user,
 out string password, out string authority)
{
    authCookie = null;
    user = password = authority = null;
    return false;
}


}

编辑:刚刚看到这个话题是一岁...

于 2013-09-19T07:58:22.417 回答
2

实际上,问题似乎出在Page_Load事件上。在遇到http://msdn.microsoft.com/en-us/library/aa337091.aspx之后,我尝试Page_Init了,事情似乎按预期工作。

于 2012-08-21T09:15:53.413 回答
0

你试过吗,劳埃德?

webViewer.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Remote;
于 2012-08-20T15:48:09.747 回答
0

我使用 LocalReport 似乎效果更好:

var reportDataSource = new ReportDataSource("DataSet1", resultSet);

ReportViewer1.LocalReport.ReportPath = Server.MapPath("/Reports/" + reportName + ".rdl");
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(reportDataSource);

ReportViewer1.LocalReport.Refresh();
于 2012-08-20T17:19:24.077 回答