Asp.net MVC 5,SQL数据库和RDLC reportviewer Web表单 [英] Asp.net MVC 5, SQL database and RDLC reportviewer web form
问题描述
亲爱的,
请帮助我使用asp.net mvc和rdlc报告查看器。我有一个syncfusion树视图页面,其中包含来自数据库和打印按钮的报告名称。我从树状视图中选择报告名称,然后单击打印按钮以打印报告。我有报告控制器,模型和视图。在视图文件夹的Report文件夹中,我有两个cshtml页面Index和ReportView。我的ReportViewer.aspx网络表单和其他.rdlc报告位于另一个文件夹中。因为我不想在树视图下的Index.cshtml中打开ReportViewer.aspx Web表单。所以我创建了ReportView.cshtml。报告树视图名称的索引页面和ReportViewer.aspx Web表单的ReportView页面。但我不知道如何将报表名称从树视图发送到ReportView.cshtml,然后从ReportView.cshtml发送到ReportViewer.aspx Web表单。我想用报告名称切换ReportViewer.aspx后面的代码。我的一些代码如下。谢谢所有的朋友。
我的尝试:
这里是我的ReportController
Dear All,
Please help me with asp.net mvc and rdlc report viewer. I have a syncfusion tree view page that contain report name from database and print button. I select the report name from tree view and click the print button to print report. I have report controller, model and view. In Report folder of view folder, I have two cshtml page Index and ReportView. And my ReportViewer.aspx web form and other .rdlc reports are in another folder. Because I don't want to open ReportViewer.aspx web form in Index.cshtml under tree view. So I create ReportView.cshtml. Index page for name of report tree view and ReportView page for ReportViewer.aspx web form. But I don't know how to send report name from tree view to ReportView.cshtml and then from ReportView.cshtml to ReportViewer.aspx web form. I want to switch case in code behind of ReportViewer.aspx with report name. Some code of mine is below. Thank you all friends.
What I have tried:
Here is my ReportController
public ActionResult Index()
{
using (conn)
{
conn.Open();
string query = "Select ReportID, ReportName, IsNull(ParentID, 0) ParentID, IsParent From Report Order By ReportID";
SqlDataAdapter da = new SqlDataAdapter(query, conn);
da.Fill(dt);
conn.Close();
}
List<ReportNameList> reportList = new List<ReportNameList>();
foreach (DataRow rows in dt.Rows)
{
reportList.Add(new ReportNameList { ReportID = Convert.ToInt32(rows["ReportID"]), ParentID = Convert.ToInt32(rows["ParentID"]), ReportName = rows["ReportName"].ToString(), IsParent = Convert.ToBoolean(rows["IsParent"]), Expanded = Convert.ToBoolean(rows["IsParent"]) });
}
ViewBag.DataSource = reportList;
return View();
}
public ActionResult ReportView()
{
return View();
}
这是我的型号
Here is my model
public class ReportNameList
{
public int ReportID { get; set; }
public string ReportName { get; set; }
public int ParentID { get; set; }
public bool IsParent { get; set; }
public bool Expanded { get; set; }
}
public class ClaimEnqTmp
{
public DateTime InvDate { get; set; }
public string RegNo { get; set; }
public string ClaimTypeName { get; set; }
public string ClaimantName { get; set; }
public string SupplierName { get; set; }
public string DepotName { get; set; }
public string DeptName { get; set; }
public string CurrencyShort { get; set; }
public int Amount { get; set; }
}
这是我的Index.cshtml。
Here is my Index.cshtml.
<div style="border:solid thin; border-color:#ecf0f5">
@(Html.EJ().TreeView("reportTree").TreeViewFields(s => s.Datasource((IEnumerable<ReportNameList>)ViewBag.datasource).Id("ReportID").ParentId("ParentID")
.Text("ReportName").HasChild("IsParent").Expanded("IsParent")))
</div>
<div class="box-footer">
<input type="button" class="btn btn-default" id="btnPrint" style="width:100px" value="Print" onclick="PrintReport()" />
</div>
这是脚本in Index.cshtml
Here is script in Index.cshtml
<script type="text/javascript">
function PrintReport() {
var treeReportList = $("#reportTree").data('ejTreeView');
var rptName = "";
var selectedNode = treeReportList.getSelectedNode();
rptName = treeReportList.getText($(selectedNode[0]));
//how to pass rptName to ReportView.cshtml. I don't know yet.
var url = '@Url.Action("ReportView", "Report")';
window.location.href = url.replace();
}
</script>
这是ReportView.cshtml页面,我不知道如何从索引页面获取para并发送到ReportViewer.aspx页面。
Here is ReportView.cshtml page and I don't know how to get para from Index page and send to ReportViewer.aspx page.
@{
ViewBag.Title = "Report";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<iframe id="myReport" width="100%" height="100%" src="~/Reports/ReportViewer.aspx?ReportName=By%20Date"></iframe>
这是我的ReportViewer.aspx页面的.cs和html。
Here is .cs and html of my ReportViewer.aspx page.
<body>
<form id="formReportViewer" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<rsweb:ReportViewer ID="rvReportViewer" runat="server" Width="100%">
</rsweb:ReportViewer>
</div>
</form>
</body>
以下是ReportViewer.aspx背后的代码
Here is code behind of ReportViewer.aspx
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if(Request.QueryString["ReportName"] != null)
{
string reportName = Request.QueryString["ReportName"].ToString();
switch (reportName)
{
case "By Date":
using (conn)
{
conn.Open();
string query = "Select InvDate, RegNo, ClaimTypeName, ClaimantName, SupplierName, DepotName, DeptName, CurrencyShort, Amount From ClaimEnqTmp";
SqlDataAdapter da = new SqlDataAdapter(query, conn);
da.Fill(dt);
conn.Close();
}
List<ClaimEnqTmp> claimEnq = new List<ClaimEnqTmp>();
foreach (DataRow rows in dt.Rows)
{
claimEnq.Add(new ClaimEnqTmp
{
InvDate = Convert.ToDateTime(rows["InvDate"]),
RegNo = rows["RegNo"].ToString(),
ClaimTypeName = rows["ClaimTypeName"].ToString(),
ClaimantName = rows["ClaimantName"].ToString(),
SupplierName = rows["SupplierName"].ToString(),
DepotName = rows["DepotName"].ToString(),
DeptName = rows["DeptName"].ToString(),
CurrencyShort = rows["CurrencyShort"].ToString(),
Amount = Convert.ToInt32(rows["Amount"])
});
}
rvReportViewer.LocalReport.ReportPath = Server.MapPath("~/Reports/rptClaimEnq.rdlc");
rvReportViewer.LocalReport.DataSources.Clear();
ReportDataSource rds = new ReportDataSource("ClaimEnqTmpDataSet", claimEnq);
rvReportViewer.LocalReport.DataSources.Add(rds);
rvReportViewer.LocalReport.Refresh();
rvReportViewer.DataBind();
break;
case a:
break;
case b:
break;
default:
break;
}
}
}
}
推荐答案
( #reportTree)。data(' ejTreeView'跨度>);
var rptName = ;
var selectedNode = treeReportList.getSelectedNode();
rptName = treeReportList.getText(
("#reportTree").data('ejTreeView'); var rptName = ""; var selectedNode = treeReportList.getSelectedNode(); rptName = treeReportList.getText(
(selectedNode [ 0 ]));
// 如何将rptName传递给ReportView.cshtml。我还不知道。
var url = ' @ Url.Action(ReportView,Report)';
window 。 location .href = url.replace();
}
< / script>
(selectedNode[0])); //how to pass rptName to ReportView.cshtml. I don't know yet. var url = '@Url.Action("ReportView", "Report")'; window.location.href = url.replace(); } </script>
这是ReportView.cshtml页面,我不知道如何从索引页面获取para并发送到ReportViewer.aspx页面。
Here is ReportView.cshtml page and I don't know how to get para from Index page and send to ReportViewer.aspx page.
@{
ViewBag.Title = "Report";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<iframe id="myReport" width="100%" height="100%" src="~/Reports/ReportViewer.aspx?ReportName=By%20Date"></iframe>
这是我的ReportViewer.aspx页面的.cs和html。
Here is .cs and html of my ReportViewer.aspx page.
<body>
<form id="formReportViewer" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<rsweb:ReportViewer ID="rvReportViewer" runat="server" Width="100%">
</rsweb:ReportViewer>
</div>
</form>
</body>
以下是ReportViewer.aspx背后的代码
Here is code behind of ReportViewer.aspx
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if(Request.QueryString["ReportName"] != null)
{
string reportName = Request.QueryString["ReportName"].ToString();
switch (reportName)
{
case "By Date":
using (conn)
{
conn.Open();
string query = "Select InvDate, RegNo, ClaimTypeName, ClaimantName, SupplierName, DepotName, DeptName, CurrencyShort, Amount From ClaimEnqTmp";
SqlDataAdapter da = new SqlDataAdapter(query, conn);
da.Fill(dt);
conn.Close();
}
List<ClaimEnqTmp> claimEnq = new List<ClaimEnqTmp>();
foreach (DataRow rows in dt.Rows)
{
claimEnq.Add(new ClaimEnqTmp
{
InvDate = Convert.ToDateTime(rows["InvDate"]),
RegNo = rows["RegNo"].ToString(),
ClaimTypeName = rows["ClaimTypeName"].ToString(),
ClaimantName = rows["ClaimantName"].ToString(),
SupplierName = rows["SupplierName"].ToString(),
DepotName = rows["DepotName"].ToString(),
DeptName = rows["DeptName"].ToString(),
CurrencyShort = rows["CurrencyShort"].ToString(),
Amount = Convert.ToInt32(rows["Amount"])
});
}
rvReportViewer.LocalReport.ReportPath = Server.MapPath("~/Reports/rptClaimEnq.rdlc");
rvReportViewer.LocalReport.DataSources.Clear();
ReportDataSource rds = new ReportDataSource("ClaimEnqTmpDataSet", claimEnq);
rvReportViewer.LocalReport.DataSources.Add(rds);
rvReportViewer.LocalReport.Refresh();
rvReportViewer.DataBind();
break;
case a:
break;
case b:
break;
default:
break;
}
}
}
}
这篇关于Asp.net MVC 5,SQL数据库和RDLC reportviewer Web表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!