asp.net のレポート ビューアーを使用してレポートを作成しました。今、私はMVC 3でも作成したいと考えています。私は MVC に非常に慣れていないので、皆さんからのガイダンスを期待してください。ありがとう !!!
質問する
6131 次
1 に答える
0
実行時にデータセットを個別に入力し、それをレポートに関連付ける必要があります。
レポート ウィザードを使用して最初にレポートを作成した場合は、使用できるデータセット定義が作成されているはずです。この場合は、StudentDataSource.xsd です。そのファイルを開くと、クエリの TableAdapter と共にクエリが表示されます。
上記の Kevin の質問に基づく例を次に示します ( How can I use a reportviewer control in an asp.net mvc 3 razor view? )
デフォルトの DataSet1 データセットと生成された StudentDataSet.xsd... を含む StudentReport.rdlc レポート
PDFControllerの変更された File() アクション メソッドは次のとおりです。
public FileResult File() {
// Create a new dataset
StudentDataSet ds = new StudentDataSet();
// Create and fill the Student data table
// using the Student table adapter
StudentDataSetTableAdapters.StudentTableAdapter dta =
new StudentDataSetTableAdapters.StudentTableAdapter();
dta.Fill(ds.Student);
// Create a new report datasource with
// Name = the dataset name in the report,
// Value = the populated data table.
ReportDataSource rds = new ReportDataSource();
rds.Name = "DataSet1";
rds.Value = ds.Student;
ReportViewer rv = new Microsoft.Reporting.WebForms.ReportViewer();
rv.ProcessingMode = ProcessingMode.Local;
rv.LocalReport.ReportPath = Server.MapPath("~/Reports/StudentReport.rdlc");
// Add the new report datasource to the report.
rv.LocalReport.DataSources.Add(rds);
rv.LocalReport.Refresh();
byte[] streamBytes = null;
string mimeType = "";
string encoding = "";
string filenameExtension = "";
string[] streamids = null;
Warning[] warnings = null;
streamBytes = rv.LocalReport.Render("PDF", null, out mimeType, out encoding, out filenameExtension, out streamids, out warnings);
return File(streamBytes, mimeType, "StudentReport.pdf");
}
また、前の質問の ASPXView.aspx ページで同じコードを使用する場合は、MVC プロジェクトと使用しているデータ セット テーブル アダプターの両方の名前空間をインポートする必要があることに注意してください。
ASPXView.aspx
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>
<%@ Import Namespace="ProjectNamespace" %>
<%@ Import Namespace="ProjectNamespace.StudentDataSetTableAdapters" %>
<!DOCTYPE html>
<html>
<head id="Head1" runat="server">
<title>ASPXView</title>
</head>
<body>
<div>
<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
StudentDataSet ds = new StudentDataSet();
StudentTableAdapter dta = new StudentTableAdapter();
dta.Fill(ds.Student);
ReportDataSource rds = new ReportDataSource();
rds.Name = "DataSet1";
rds.Value = ds.Student;
ReportViewer1.LocalReport.ReportPath = Server.MapPath("~/Reports/StudentReport.rdlc");
ReportViewer1.LocalReport.DataSources.Add(rds);
ReportViewer1.LocalReport.Refresh();
}
</script>
<form id="Form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<rsweb:reportviewer id="ReportViewer1" runat="server" height="500" width="500" AsyncRendering="false"></rsweb:reportviewer>
</form>
</div>
</body>
</html>
于 2012-05-03T20:04:20.320 に答える