也就是利用網站的網頁來直接鏈結呈現報表結果。
因為報表有些屬於隱私資料,所以在開發上要注意一些敏感性報表資料呈現是否合宜,例如機密資料就需先進行網站 Membership 的認證再進行網頁資料的呈現等等。
注意事項:
- .NET FRAMEWORK 3.0 以下版本,請注意有沒有按裝支援 AJAX 的元件。
- Reporting Server 的驗證是 Windows 帳密驗證非 SQL SA 等資料庫帳密的驗證。
- 這次範例程式碼語言為 C#
1.新建立一網站專案,並建立欲鏈結的網頁,此次是用 Default.aspx 作為範例頁面。
所以切換至設計請先拖曳 AJAX擴充功能 >> ScriptManager 控制項至頁面最上方。
然後再拖曳 報告 >> ReportViewer 控制項至網頁適當位置。
因為這次鏈結有字串(String)參數 TitleName 要傳送,新增一 標準 >> TextBox 控制項以及 Button 控制項處理確認鏈結,如下圖。
public class CustomReportCredentials : Microsoft.Reporting.WebForms.IReportServerCredentials
{
// local variable for network credential
private string strUserName;
private string strPassWord;
private string strDomainName;
public CustomReportCredentials(string UserName, string PassWord, string DomainName)
{
strUserName = UserName;
strPassWord = PassWord;
strDomainName = DomainName;
}
public System.Security.Principal.WindowsIdentity ImpersonationUser
{
// not use ImpersonationUser
get { return null; }
}
public System.Net.ICredentials NetworkCredentials
{
// use NetworkCredentials
get { return new System.Net.NetworkCredential(strUserName, strPassWord, strDomainName); }
}
public bool GetFormsCredentials(out System.Net.Cookie authCookie, out string userName, out string password, out string authority)
{
// not use FormsCredentials unless you have implements a custom autentication.
authCookie = null;
userName = null;
password = null;
authority = null;
return false;
}
}
4.再撰寫一個呼叫的SetReportViewerAuth類別。請注意報表報表位置、帳號、密碼
public void SetReportViewerAuth(Microsoft.Reporting.WebForms.ReportViewer sender, string ReportName, Microsoft.Reporting.WebForms.ReportParameter[] _params)
{
string strReportsServer = "報表位置"; //報表位置IP
string strUserName = "帳號"; //Windows驗證非SQL驗證
string strPassword = "密碼";
Microsoft.Reporting.WebForms.IReportServerCredentials mycred = new CustomReportCredentials(strUserName, strPassword, strReportsServer);
sender.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Remote;
Uri reportUri = new Uri("http://" + strReportsServer + "/reportserver");
var _with1 = sender.ServerReport;
_with1.ReportServerUrl = reportUri;
_with1.ReportPath = "/" + ReportName;
_with1.ReportServerCredentials = mycred;
_with1.SetParameters(_params);
sender.ShowParameterPrompts = false;
sender.Visible = true;
sender.ZoomPercent = 75;
}
5.切下來處理頁面上 Button 控制項點擊的事件。如有更多參數,請注意新增參數的陣列即可。
protected void Button1_Click(object sender, EventArgs e)
{
Microsoft.Reporting.WebForms.ReportParameter[] _params = new Microsoft.Reporting.WebForms.ReportParameter[1];
_params[0] = new Microsoft.Reporting.WebForms.ReportParameter("TitleName", this.TextBox1.Text); //參數名稱
SetReportViewerAuth(ReportViewer1, "RPReport", _params); //報表名稱
}
6.接下來就是測試看看了。
SQL Server Reporting Services in ASP.NET
我在網路上找到您這篇謝謝您幫了一個大忙
回覆刪除在此感謝
另外分享一下 您的內容
Microsoft.Reporting.WebForms.IReportServerCredentials mycred = new CustomReportCredentials(strUserName, strPassword, strReportsServer);
strReportsServer 應該改成 strDomain才對