接上一篇《hibernate+spring+mvc+Easyui框架模式下使用grid++report的總結》對grid++report做進一步開發
先寫一下實現流程:
1、默認為全部載入
2、雙擊一行后將記錄改行的數據,並顯示在上方div中
3、點擊div中各單元的X可以進行單元刪除(上圖刪除了超級管理員顯示如下)
4、點擊載入選中項后,對數據進行過濾,篩選出選中項
5、全部刪除后,默認查詢出所有項
6、所有項
7、重新載入后可以選擇打印,就相當於打印當前頁面了
下面貼代碼。
html

1 <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> 2 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 4 <html xmlns="http://www.w3.org/1999/xhtml"> 5 <head runat="server"> 6 <title>報表</title> 7 <meta name="viewport" content="width=device-width" /> 8 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 9 <%:Styles.Render("~/Content/easyui/css")%> 10 <%:Styles.Render("~/Content/Index/css")%> 11 <%:Scripts.Render("~/bundles/jquery")%> 12 <%:Scripts.Render("~/Scripts/jquery-1.8.0.min.js")%> 13 <%:Scripts.Render("~/Scripts/easyUI/jquery.min.js")%> 14 <%:Scripts.Render("~/Scripts/easyUI/jquery.easyui.min.js")%> 15 <%:Scripts.Render("~/Scripts/jquery.uploadify.js")%> 16 <%:Scripts.Render("~/bundles/easyui")%> 17 <%:Styles.Render("~/Content/uploadify/uploadify.css")%> 18 <%:Scripts.Render("~/Content/CreateControl.js")%> 19 <script type="text/javascript"> 20 //在網頁初始加載時啟動報表的運行顯示 21 function window_onload() { 22 btnRefresh_onclick(); 23 } 24 25 //打印預覽報表 26 function btnPreview_onclick() { 27 ReportViewer.Report.PrintPreview(true); 28 } 29 30 //根據數據過濾參數重新顯示報表 31 function btnRefresh_onclick() { 32 ReportViewer.Stop(); 33 ReportViewer.DataURL = "user/load"; 34 // var BeginDate = document.getElementById("txtBeginDate").value; 35 // var EndDate = document.getElementById("txtEndDate").value; 36 // var DataURL = encodeURI("xmlSummary.aspx?BeginDate=" + BeginDate + "&EndDate=" + EndDate); 37 // ReportViewer.DataURL = DataURL; 38 39 //更新查詢參數更新報表付標題,設置對應靜態框的“Text”屬性 40 //ReportViewer.Report.ControlByName("SubTitle").AsStaticBox.Text = "日期范圍:" + BeginDate + "至" + EndDate; 41 ReportViewer.Start(); 42 } 43 var str_Check = ""; //用於存放由選中而生成的html 44 var str_CheckId = ""; //用於存放選中的id 格式為‘1’,‘2’ 45 //雙擊的時候div中添加顯示 46 function btnDrillDown_onclick() { 47 var ProductName = ReportViewer.Report.FieldByName("Name").AsString; //要在html中顯示的字段 48 var ID = ReportViewer.Report.FieldByName("ID").AsString; //獲取id 49 var IDs = "'" + ID + "'"; 50 var str_CheckIdArry = str_CheckId.split(','); 51 //判斷是否已經存在防止重復添加 52 var isExist = false; 53 for (var i = 0; i < str_CheckIdArry.length; i++) { 54 if (str_CheckIdArry[i] == IDs) { 55 isExist = true; 56 } 57 } 58 //不存在的時候添加進去 59 if (!isExist) { 60 //添加到html字符串中 61 str_Check += "<div style='float: left;cursor:hand; border-width:1px; border-color:lightblue;border-style:solid;width:100px' id='sl_" + ID + "'>" + ProductName + "<img src='../../../../Content/easyUi/themes/icons/cancel.png' onclick=\"deleteIt('" + ID + "')\" style='float:right;width:10px;height:10px'/></div>"; 62 //添加到id中 63 str_CheckId += IDs + ","; 64 //將html加載到頁面中去 65 $("#selectedRow").html(str_Check); 66 } 67 //存在的時候提示 68 else { 69 alert("該行已選擇!"); 70 } 71 72 } 73 //點擊刪除的時候把添加進去的單元進行刪除 74 function deleteIt(id) { 75 76 var IDs = "'" + id + "'"; 77 var str_CheckIdArry = str_CheckId.split(','); 78 var isExist = false; 79 var str_CheckIdTemp = ""; 80 str_Check = ""; 81 //根據id是否重復進行排除 82 for (var i = 0; i < str_CheckIdArry.length; i++) { 83 if (str_CheckIdArry[i] != IDs && str_CheckIdArry[i] != "") { 84 str_CheckIdTemp += str_CheckIdArry[i] + ","; 85 } 86 } 87 //排除掉刪除的單元后的id組合 88 str_CheckId = str_CheckIdTemp; 89 //移除單元的html 90 $("#sl_" + id).remove(); 91 //移除單元后剩余的html 92 str_Check = $("#selectedRow").html(); 93 94 } 95 //點擊載入選中項將信息載入到當前頁面。 96 function btn_dyxzx_onclick() { 97 ReportViewer.Stop(); 98 if (str_CheckId.length > 0) { 99 str_CheckId = str_CheckId.substr(0, str_CheckId.length - 1); 100 } 101 //傳遞參數從后台獲取數據源 102 ReportViewer.DataURL = "user/dyxzx?id=" + str_CheckId; 103 104 ReportViewer.Start(); 105 } 106 function OnContentCellDblClick(Sender) //響應內容行雙擊事件,打開當前行對應的明細報表 107 { 108 btnDrillDown_onclick(); 109 } 110 </script> 111 <style type="text/css"> 112 html, body 113 { 114 margin: 0; 115 height: 100%; 116 } 117 </style> 118 </head> 119 <body style="margin: 0; background-color: #f0ffff;" onload="window_onload()"> 120 <table border="0" width="100%" height="100%"> 121 <tr> 122 <td colspan="5"> 123 <div id="selectedRow" style="width: 100%; height: auto"> 124 </div> 125 </td> 126 </tr> 127 <tr style="width: 100%;"> 128 <%-- <td style="font-size: 10pt; height: 23px; width: 50%;"> 129 開始日期:<input id="txtBeginDate" type="text" value="1997-1-1" name="txtBeginDate" maxlength="20" 130 style="width: 84px"> 131 結束日期:<input id="txtEndDate" type="text" value="1997-12-31" name="txtEndDate" maxlength="20" 132 style="width: 80px" /> 133 <input id="btnRefresh" onclick="return btnRefresh_onclick()" type="button" value="更新顯示" 134 name="btnRefresh" /> 135 </td>--%> 136 <td colspan="5" style="font-size: 10pt; height: 23px; width: 50%;"> 137 <input id="btnPreview" onclick="return btnPreview_onclick()" type="button" value="打印預覽" 138 name="btnPreview" /> 139 <%-- <input id="btnDrillDown" onclick="return btnDrillDown_onclick()" type="button" value="明細報表" 140 name="btnDrillDown" />--%> 141 <input id="btn_dyxzx" onclick="return btn_dyxzx_onclick()" type="button" value="載入選中項" 142 name="btn_dyxzx" /> 143 </td> 144 </tr> 145 <tr style="height: 100%;"> 146 <td colspan="5" style="font-size: 10pt;"> 147 <script type="text/javascript"> 148 CreateDisplayViewerEx("100%", "100%", "../../../../grf/user.grf", "", false, "<param name=BorderStyle value=1>" + 149 "<param name='OnContentCellDblClick' value='OnContentCellDblClick'>"); 150 </script> 151 </td> 152 </tr> 153 </table> 154 </body> 155 </html>
c#

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.Mvc; 6 using System.IO; 7 using CLGL.Web.Controllers; 8 using System.Text; 9 using Wat.Common; 10 using Domain; 11 using System.IO.Compression; 12 using Newtonsoft.Json; 13 using System.Globalization; 14 using Common.ToolsHelper; 15 16 namespace CLGL.Web.Areas.GrfDemo.Controllers 17 { 18 public class UserController : Controller 19 { 20 // 21 // GET: /GrfDemo/User/ 22 Service.IUserManager userManage { get; set; } 23 //User user = new User(); 24 public ActionResult Index() 25 { 26 return View(); 27 } 28 /// <summary> 29 /// 默認載入所有項 30 /// 創建標識:guohao 31 /// </summary> 32 /// <returns></returns> 33 public ActionResult Load() 34 { 35 IList<User> list = userManage.LoadAll(); 36 string str = XMLHelperToList<User>.EntityToXml(list); 37 Response.Write(str); 38 Response.End(); 39 return View(); 40 } 41 /// <summary> 42 /// 載入選中項 43 /// 創建標識:guohao 44 /// </summary> 45 /// <param name="id">id組合格式‘1',‘2’</param> 46 /// <returns></returns> 47 public ActionResult dyxzx(string id) 48 { 49 if (id == "")//如果id為空的話全部載入 50 { 51 IList<User> list = userManage.LoadAll(); 52 string str = XMLHelperToList<User>.EntityToXml(list); 53 Response.Write(str); 54 Response.End(); 55 } 56 else//如果不為空的話,載入選中項 57 { 58 IList<User> list = userManage.LoadAll(); 59 var listSlect = (from r in list 60 where id.Contains(r.Id) 61 select new 62 { 63 r.Id, 64 r.Name, 65 r.Account, 66 r.Password, 67 r.IsCanLogin, 68 r.ShowOrder1, 69 r.ShowOrder2, 70 r.CreatePer, 71 r.CreateDpt, 72 r.CreateDate, 73 r.Dpt, 74 r.Phone, 75 r.OfficePhone, 76 r.SexCode, 77 r.EmailAddress 78 }); 79 IList<User> listselect = new List<User>(); 80 //循環到List中 81 foreach (var a in listSlect) 82 { 83 User user = new User(); 84 user.Id = a.Id; 85 user.Name = a.Name; 86 user.Account = a.Account; 87 user.Password = a.Password; 88 user.IsCanLogin = a.IsCanLogin; 89 user.ShowOrder1 = a.ShowOrder1; 90 user.ShowOrder2 = a.ShowOrder2; 91 user.CreatePer = a.CreatePer; 92 user.CreateDpt = a.CreateDpt; 93 user.CreateDate = a.CreateDate; 94 user.Dpt = a.Dpt; 95 user.Phone = a.Phone; 96 user.OfficePhone = a.OfficePhone; 97 user.SexCode = a.SexCode; 98 user.EmailAddress = a.EmailAddress; 99 listselect.Add(user); 100 } 101 //轉為xml字符串 102 string str = XMLHelperToList<User>.EntityToXml(listselect); 103 //push 104 Response.Write(str); 105 Response.End(); 106 } 107 return View(); 108 } 109 } 110 }
還有其他好用的方式請留言討論,報表畫的爛,請擔待