接上一篇《hibernate+spring+mvc+Easyui框架模式下使用grid++report的总结》对grid++report做进一步开发

先写一下实现流程:

1、默认为全部载入

2、双击一行后将记录改行的数据,并显示在上方div中

3、点击div中各单元的X可以进行单元删除(上图删除了超级管理员显示如下)

4、点击载入选中项后,对数据进行过滤,筛选出选中项

5、全部删除后,默认查询出所有项

6、所有项

7、重新载入后可以选择打印,就相当于打印当前页面了

下面贴代码。

html

 <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>报表</title>
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<%:Styles.Render("~/Content/easyui/css")%>
<%:Styles.Render("~/Content/Index/css")%>
<%:Scripts.Render("~/bundles/jquery")%>
<%:Scripts.Render("~/Scripts/jquery-1.8.0.min.js")%>
<%:Scripts.Render("~/Scripts/easyUI/jquery.min.js")%>
<%:Scripts.Render("~/Scripts/easyUI/jquery.easyui.min.js")%>
<%:Scripts.Render("~/Scripts/jquery.uploadify.js")%>
<%:Scripts.Render("~/bundles/easyui")%>
<%:Styles.Render("~/Content/uploadify/uploadify.css")%>
<%:Scripts.Render("~/Content/CreateControl.js")%>
<script type="text/javascript">
//在网页初始加载时启动报表的运行显示
function window_onload() {
btnRefresh_onclick();
} //打印预览报表
function btnPreview_onclick() {
ReportViewer.Report.PrintPreview(true);
} //根据数据过滤参数重新显示报表
function btnRefresh_onclick() {
ReportViewer.Stop();
ReportViewer.DataURL = "user/load";
// var BeginDate = document.getElementById("txtBeginDate").value;
// var EndDate = document.getElementById("txtEndDate").value;
// var DataURL = encodeURI("xmlSummary.aspx?BeginDate=" + BeginDate + "&EndDate=" + EndDate);
// ReportViewer.DataURL = DataURL; //更新查询参数更新报表付标题,设置对应静态框的“Text”属性
//ReportViewer.Report.ControlByName("SubTitle").AsStaticBox.Text = "日期范围:" + BeginDate + "至" + EndDate;
ReportViewer.Start();
}
var str_Check = ""; //用于存放由选中而生成的html
var str_CheckId = ""; //用于存放选中的id 格式为‘1’,‘2’
//双击的时候div中添加显示
function btnDrillDown_onclick() {
var ProductName = ReportViewer.Report.FieldByName("Name").AsString; //要在html中显示的字段
var ID = ReportViewer.Report.FieldByName("ID").AsString; //获取id
var IDs = "'" + ID + "'";
var str_CheckIdArry = str_CheckId.split(',');
//判断是否已经存在防止重复添加
var isExist = false;
for (var i = 0; i < str_CheckIdArry.length; i++) {
if (str_CheckIdArry[i] == IDs) {
isExist = true;
}
}
//不存在的时候添加进去
if (!isExist) {
//添加到html字符串中
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>";
//添加到id中
str_CheckId += IDs + ",";
//将html加载到页面中去
$("#selectedRow").html(str_Check);
}
//存在的时候提示
else {
alert("该行已选择!");
} }
//点击删除的时候把添加进去的单元进行删除
function deleteIt(id) { var IDs = "'" + id + "'";
var str_CheckIdArry = str_CheckId.split(',');
var isExist = false;
var str_CheckIdTemp = "";
str_Check = "";
//根据id是否重复进行排除
for (var i = 0; i < str_CheckIdArry.length; i++) {
if (str_CheckIdArry[i] != IDs && str_CheckIdArry[i] != "") {
str_CheckIdTemp += str_CheckIdArry[i] + ",";
}
}
//排除掉删除的单元后的id组合
str_CheckId = str_CheckIdTemp;
//移除单元的html
$("#sl_" + id).remove();
//移除单元后剩余的html
str_Check = $("#selectedRow").html(); }
//点击载入选中项将信息载入到当前页面。
function btn_dyxzx_onclick() {
ReportViewer.Stop();
if (str_CheckId.length > 0) {
str_CheckId = str_CheckId.substr(0, str_CheckId.length - 1);
}
//传递参数从后台获取数据源
ReportViewer.DataURL = "user/dyxzx?id=" + str_CheckId; ReportViewer.Start();
}
function OnContentCellDblClick(Sender) //响应内容行双击事件,打开当前行对应的明细报表
{
btnDrillDown_onclick();
}
</script>
<style type="text/css">
html, body
{
margin: 0;
height: 100%;
}
</style>
</head>
<body style="margin: 0; background-color: #f0ffff;" onload="window_onload()">
<table border="0" width="100%" height="100%">
<tr>
<td colspan="5">
<div id="selectedRow" style="width: 100%; height: auto">
</div>
</td>
</tr>
<tr style="width: 100%;">
<%-- <td style="font-size: 10pt; height: 23px; width: 50%;">
开始日期:<input id="txtBeginDate" type="text" value="1997-1-1" name="txtBeginDate" maxlength="20"
style="width: 84px">
结束日期:<input id="txtEndDate" type="text" value="1997-12-31" name="txtEndDate" maxlength="20"
style="width: 80px" />
<input id="btnRefresh" onclick="return btnRefresh_onclick()" type="button" value="更新显示"
name="btnRefresh" />
</td>--%>
<td colspan="5" style="font-size: 10pt; height: 23px; width: 50%;">
<input id="btnPreview" onclick="return btnPreview_onclick()" type="button" value="打印预览"
name="btnPreview" />
<%-- <input id="btnDrillDown" onclick="return btnDrillDown_onclick()" type="button" value="明细报表"
name="btnDrillDown" />--%>
<input id="btn_dyxzx" onclick="return btn_dyxzx_onclick()" type="button" value="载入选中项"
name="btn_dyxzx" />
</td>
</tr>
<tr style="height: 100%;">
<td colspan="5" style="font-size: 10pt;">
<script type="text/javascript">
CreateDisplayViewerEx("100%", "100%", "../../../../grf/user.grf", "", false, "<param name=BorderStyle value=1>" +
"<param name='OnContentCellDblClick' value='OnContentCellDblClick'>");
</script>
</td>
</tr>
</table>
</body>
</html>

c#

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.IO;
using CLGL.Web.Controllers;
using System.Text;
using Wat.Common;
using Domain;
using System.IO.Compression;
using Newtonsoft.Json;
using System.Globalization;
using Common.ToolsHelper; namespace CLGL.Web.Areas.GrfDemo.Controllers
{
public class UserController : Controller
{
//
// GET: /GrfDemo/User/
Service.IUserManager userManage { get; set; }
//User user = new User();
public ActionResult Index()
{
return View();
}
/// <summary>
/// 默认载入所有项
/// 创建标识:guohao
/// </summary>
/// <returns></returns>
public ActionResult Load()
{
IList<User> list = userManage.LoadAll();
string str = XMLHelperToList<User>.EntityToXml(list);
Response.Write(str);
Response.End();
return View();
}
/// <summary>
/// 载入选中项
/// 创建标识:guohao
/// </summary>
/// <param name="id">id组合格式‘1',‘2’</param>
/// <returns></returns>
public ActionResult dyxzx(string id)
{
if (id == "")//如果id为空的话全部载入
{
IList<User> list = userManage.LoadAll();
string str = XMLHelperToList<User>.EntityToXml(list);
Response.Write(str);
Response.End();
}
else//如果不为空的话,载入选中项
{
IList<User> list = userManage.LoadAll();
var listSlect = (from r in list
where id.Contains(r.Id)
select new
{
r.Id,
r.Name,
r.Account,
r.Password,
r.IsCanLogin,
r.ShowOrder1,
r.ShowOrder2,
r.CreatePer,
r.CreateDpt,
r.CreateDate,
r.Dpt,
r.Phone,
r.OfficePhone,
r.SexCode,
r.EmailAddress
});
IList<User> listselect = new List<User>();
//循环到List中
foreach (var a in listSlect)
{
User user = new User();
user.Id = a.Id;
user.Name = a.Name;
user.Account = a.Account;
user.Password = a.Password;
user.IsCanLogin = a.IsCanLogin;
user.ShowOrder1 = a.ShowOrder1;
user.ShowOrder2 = a.ShowOrder2;
user.CreatePer = a.CreatePer;
user.CreateDpt = a.CreateDpt;
user.CreateDate = a.CreateDate;
user.Dpt = a.Dpt;
user.Phone = a.Phone;
user.OfficePhone = a.OfficePhone;
user.SexCode = a.SexCode;
user.EmailAddress = a.EmailAddress;
listselect.Add(user);
}
//转为xml字符串
string str = XMLHelperToList<User>.EntityToXml(listselect);
//push
Response.Write(str);
Response.End();
}
return View();
}
}
}

还有其他好用的方式请留言讨论,报表画的烂,请担待

使用grid++report打印选中行的更多相关文章

  1. Grid++Report——打印功能

    一.安装下载 http://www.rubylong.cn/Download.htm 二.添加引用 三.添加类 四.制作打印模板 1.新增报表节 新增明细网格 新增列→设置为自由格→调整大小 报表→设 ...

  2. kendo ui grid选中行事件,获取combobox选择的值

    背景: 以前用 telerik ui做的grid现在又要换成kendo ui,不过说句实话kendo ui真的比telerik好多,可以说超级升级改头换面.当然用的mvc的辅助方法,以前的teleri ...

  3. 获取 ext grid 选中行 对象

    在ext grid 中如何确定选中行?如何获取选中行数据? 其实很简单,用到了Ext.getCmp('id'),他可以获取到指定id的对象. grid 获取行对象: var row = Ext.get ...

  4. DHtmlx组件获取选中行的某一列对应的值

    最近刚刚接触DHtmlx这个js组件,对它还不是太了解,还在学习中,算是记录自己学习该组件的历程吧. 首先xml文件里有一个grid,有对应的checkbox,通过 var selectedId = ...

  5. 二十六、【开源框架】EFW框架Winform前端开发之Grid++Report报表、条形码、Excel导出、图表控件

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...

  6. 机房收费系统中的Grid++Report报表设计器的应用

    在进行账单查询功能的时候我应用了Grid++Report报表设计器,下面我就为大家介绍一下,还望大家多多指点. 首先,在Grid++Report报表设计器中进行报表界面的设置.在属性编辑窗口中这里对报 ...

  7. Grid++Report 报表开发工具

      Grid++Report 报表开发工具   版本 更新日期 大小 下载 说明 Grid++Repoert6.0.0.6 2015/08/08 16.0M [下载] 锐浪报表工具最新版本,新增功能说 ...

  8. Grid++Report支持CS/BS模式的表报插件

    Grid++Report 可用于开发桌面C/S报表与WEB报表(B/S报表),C/S报表开发适用于VB.NET.C#.VB.VC.Delphi等.WEB报表开发适用于ASP.ASP.NET.JSP/J ...

  9. 浅谈Notepad++选中行操作+快捷键+使用技巧【超详解】

    Notepad++选中行操作 快捷键 使用技巧 用Notepad++写代码,要是有一些重复的代码想copy一下,还真不容易,又得动用鼠标,巨烦人.... 有木有简单的方法呢,确实还是有的不过也不算太好 ...

随机推荐

  1. QT中读取文本数据(txt)

    下面的代码实现读取txt文档中的数据,并且是一行一行的读取. void MainWindow::on_pushButton_clicked() { QFile file("abcd.txt& ...

  2. scala 入门(1)

    大数据“火”的有段日子了,原来打算学习hadoop…… 后知道spark要比hadoop更牛, 故而转学spark.其原码为scala所写,为了更好的研究spark,故又开始学习scala. 将自己所 ...

  3. UVA 11478 Halum (差分约束)

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  4. 我所理解的设计模式(C++实现)——状态模式(State Pattern)

    概述: 看看我们平时用的开关,同样一个开关他有2种状态:开和关,当她处于不同的状态的时候她的行为是不一样的,比如当她是开着的时候,你按她一下,她就变成了关闭状态,她是关着的时候按她一下,她就变成了开着 ...

  5. 专题笔记--Java 类集框架

    Java 类集框架 1. Java类集框架产生的原因 在基础的应用中,我们可以通过数组来保存一组对象或者基本数据,但数组的大小是不可更改的,因此出于灵活性的考虑和对空间价值的担忧,我们可以使用链表来实 ...

  6. 关于bootstrap--表格(tr的各种样式)

    只需要<tr class="active">就可以用active样式. 特别提示:除了”.active”之外,其他四个类名和”.table-hover”配合使用时,Bo ...

  7. poj 2785 4 Values whose Sum is 0(折半枚举(双向搜索))

    Description The SUM problem can be formulated . In the following, we assume that all lists have the ...

  8. hdu 5159 Card (期望)

    Problem Description There are x cards on the desk, they are numbered from 1 to x. The score of the c ...

  9. unity3d 学习笔记(一)

    操作:按下shit 点击坐标轴中心 切换透视图 动画烘焙的概念:相当于把原来的控制器动画或者IK(骨骼)动画所有塌陷为逐帧动画,导出的时候必须选这一项 着色器:从技术的角度来看,着色器是渲染器的一个部 ...

  10. 高性能MySql进化论【转】

    高性能MySql进化论(十二):Mysql中分区表的使用总结 http://binary.duapp.com/category/sql 当数据量非常大时(表的容量到达GB或者是TB),如果仍然采用索引 ...