Asp.net MVC 5,SQL数据库和RDLC reportviewer Web表单 [英] Asp.net MVC 5, SQL database and RDLC reportviewer web form

查看:66
本文介绍了Asp.net MVC 5,SQL数据库和RDLC reportviewer Web表单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

亲爱的,

请帮助我使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆