1. 程式人生 > >MVC引用asp.net報表(測試小例子)

MVC引用asp.net報表(測試小例子)

lse lsp publickey bag override request RR bre rda

技術分享圖片
 1  public class Default1Controller : Controller
 2     {
 3         //
 4         // GET: /Default1/
 5 
 6         public ActionResult Index()
 7         {
 8             return View();
 9         }
10 
11         public JsonResult ReportFileName()
12         {
13             DirectoryInfo d = new DirectoryInfo(Server.MapPath("
~/") + "Report/"); 14 FileSystemInfo[] fsinfos = d.GetFileSystemInfos(); 15 List<string> fileName = fsinfos.Where(p => p.Name.IndexOf(".rdlc", StringComparison.Ordinal) == -1).Select(fsinfo => fsinfo.Name.Replace(".rdl", "")).ToList(); 16 return Json(new
{ Result = fileName }); 17 } 18 19 public JsonResult ExistsFile(string keyId) 20 { 21 string path = Server.MapPath("~/") + "Report/" + keyId + ".rdl"; 22 return this.Json(new { ResultBool = System.IO.File.Exists(path) }); 23 } 24 }
MVC後端 技術分享圖片
 1
@{ 2 ViewBag.Title = "Index"; 3 } 4 <script src="~/Scripts/jquery-1.8.2.min.js"></script> 5 <span>站點:<input type="text" id="siteid"></span> 6 <select id="SelReport"></select> 7 8 9 <input type="button" value="報表" onclick="getReport()" /> 10 <br /> 11 <iframe id="IframeUrl" name="IframeUrl" style="width: 100%; height: 1200px;"></iframe> 12 13 <script type="text/javascript"> 14 function getReport() { 15 var sel = $("#SelReport").val(); 16 var site = $("#siteid").val(); 17 $.ajax({ 18 url: "/Default1/ExistsFile", 19 data: { "keyId": sel }, 20 type: "post", 21 dataType: "json", 22 success: function (data) { 23 if (data.ResultBool) { 24 $("#IframeUrl").attr("src", "../WebForm1.aspx?KeyId=" + sel + "&site=" + site); 25 } else 26 alert(sel + "報表不存在!"); 27 } 28 29 }); 30 } 31 32 $(document).ready(function () { 33 $.ajax( 34 { 35 url: /Default1/ReportFileName, 36 data: ‘‘, 37 type: post, 38 dataType: json, 39 success: function (data) { 40 if (data != null) { 41 var option; 42 $.each(data.Result, function (i, v) { 43 option += "<option>" + v + "</option>"; 44 }); 45 $("#SelReport").html(option); 46 } 47 } 48 }); 49 }); 50 </script>
MVC前端 技術分享圖片
  1  public partial class WebForm1 : System.Web.UI.Page
  2     {
  3         protected void Page_Load(object sender, EventArgs e)
  4         {
  5             if (!IsPostBack)
  6             {
  7                 BindReport(Request["KeyId"]);
  8             }
  9         }
 10 
 11 
 12 
 13 
 14         private void BindReport(string keyId)
 15         {
 16             string sql = string.Empty;
 17             string site = Request["site"];
 18             switch (keyId)
 19             {
 20                 case "無標題":
 21                     sql = " select * from sysuser";
 22                     if (site.Length > 0)
 23                     {
 24                         sql += " where defsite like ‘" + site.Trim() + "%‘";
 25                     }
 26                     break;
 27                 case "有標題":
 28                     sql = " select * from facility";
 29                     if (site.Length > 0)
 30                     {
 31                         sql += " where siteid like ‘" + site.Trim() + "%‘";
 32                     }
 33                     break;
 34                 case "報表模板":
 35                     sql = "SELECT USERID AS SEQ,PERSONID AS KSSJ,DEFSITE AS JSSJ FROM SYSUSER";
 36                     if (site.Length > 0)
 37                     {
 38                         sql += " where siteid like ‘" + site.Trim() + "%‘";
 39                     }
 40                     break;
 41                 default:
 42                     break;
 43             }
 44 
 45             DataTable dt = new DataTable();
 46             ReportViewer1.ProcessingMode = ProcessingMode.Local;
 47             ReportViewer1.LocalReport.ReportPath = Server.MapPath("~/") + @"Report/" + keyId + ".rdl"; //可以通過SQL語句傳參形式
 48             ReportViewer1.LocalReport.EnableExternalImages = true;
 49             dt = QueryTable(sql);
 50             ReportDataSource rds = new ReportDataSource("DataSet1", dt); //DataSetl報表數據集名稱
 51             ReportViewer1.LocalReport.DataSources.Clear();
 52             ReportViewer1.LocalReport.DataSources.Add(rds);
 53             ReportViewer1.LocalReport.Refresh();
 54             //ClientScript.RegisterClientScriptBlock(ClientScript.GetType(), "MyScript", "<script>Myfun();</script>");
 55             //Response.Write("<script type=‘text/javascript‘>setTimeout(‘Myfun()‘,‘1000‘);function Myfun(){ $(‘#ReportViewer1_ctl05_ctl04_ctl00_Menu>div>a:eq(2)‘).click();}</script>");
 56             //string js =
 57             //    "<script src=\"Scripts/jquery-1.8.2.min.js\"></script><script type=‘text/javascript‘> " +
 58             //    "var t1 = window.setTimeout(Myfun, 100); " +
 59             //    "function Myfun() {  " +
 60             //    "try {  " +
 61             //    "if ($(‘#ReportViewer1_ctl05_ctl04_ctl00_Menu>div>a:eq(2)‘).length > 0) " +
 62             //    "{ console.log(‘test‘);" +
 63             //    "$(‘#ReportViewer1_ctl05_ctl04_ctl00_Menu>div>a:eq(2)‘).click();" +
 64             //    " window.clearTimeout(t1);} " +
 65             //    "} " +
 66             //    "catch (err) " +
 67             //    "{}" +
 68             //    "}</script>";
 69             //Response.Write(js);
 70         }
 71 
 72 
 73 
 74         /// <summary>
 75         /// 執行查詢語句,返回DataTable
 76         /// </summary>
 77         /// <param name="sqlString">查詢語句</param>
 78         /// <returns>DataTable</returns>
 79         public static DataTable QueryTable(string sqlString)
 80         {
 81 
 82             using (var connection = new OracleConnection("DATA SOURCE=192.168.1.61:5050/Xinsida;USER ID=BKCYUN;PASSWORD=bkc123456;"))
 83             {
 84                 var dt = new DataTable();
 85                 try
 86                 {
 87                     connection.Open();
 88                     var command = new OracleDataAdapter(sqlString, connection);
 89                     command.Fill(dt);
 90                     return dt;
 91                 }
 92                 catch (Exception e)
 93                 {
 94                     throw e;
 95                 }
 96                 finally
 97                 {
 98                     if (connection.State == ConnectionState.Open)
 99                     {
100                         connection.Close();
101                     }
102                 }
103             }
104         }
105         protected override void Render(HtmlTextWriter writer)
106         {
107             using (StringWriter sw = new StringWriter())
108             {
109                 HtmlTextWriter tmpWriter = new HtmlTextWriter(sw);
110                 base.Render(tmpWriter);
111                 string val = sw.ToString();
112                 val = val.Replace(@"!= ‘javascript:\‘\‘‘", @"!= ‘javascript:\‘\‘‘ && false");
113                 writer.Write(val);
114             }
115         }
116     }
WebForm後端 技術分享圖片
 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="ReportBuilderTest1.WebForm1" %>
 2 
 3 <%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>
 4 <script src="Scripts/jquery-1.8.2.min.js"></script>
 5 <script src="Scripts/jquery-ui-1.8.24.js"></script>
 6 <!DOCTYPE html>
 7 <html>
 8 <head runat="server">
 9     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10     <title></title>
11     <style>
12         body {
13             margin: 0;
14             padding: 0;
15         }
16     </style>
17     <%--    <script type="text/javascript">
18         //function Myfun() {
19         //    //console.log("test");
20         //    ////$("#ReportViewer1_ctl05_ctl04_ctl00_Menu>div").setAttribute(‘style‘, ‘border: 1px solid transparent, background-color: transparent, cursor: default‘);
21         //    ////$("#ReportViewer1_ctl05_ctl04_ctl00_Button").click();
22 
23         //    //$("#ReportViewer1_ctl05_ctl04_ctl00_Menu").removeAttr("style");
24         //    //$("#ReportViewer1_ctl05_ctl04_ctl00_Menu>div>a").eq(2).click();
25         //    return true;
26         //}
27     </script>--%>
28 </head>
29 <body>
30     <form id="form1" runat="server">
31         <table align="center" border="0" cellpadding="0" cellspacing="0">
32             <tr>
33                 <td>
34                     <asp:ScriptManager ID="ScriptManager1" runat="server">
35                     </asp:ScriptManager>
36                     <rsweb:ReportViewer ID="ReportViewer1" runat="server" Height="100%" Width="98%" Font-Names="Verdana" Font-Size="8pt" SizeToReportContent="true">
37                     </rsweb:ReportViewer>
38                 </td>
39             </tr>
40         </table>
41     </form>
42 </body>
43 </html>
WebForm前端

還有一個文件夾Report下面有.rdl報表。這裏就不寫了。

MVC引用asp.net報表(測試小例子)