接上一篇《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. 关于css中overflow的一些理解

    在做移动端开发的时候,遇到过这么个问题:要把图片进行放大,但有时候图片比较长,一个手机的版面看不了,于是需要用到overflow的属性,刚开始用了overflow-y:scroll, 于是问题来了,如 ...

  2. Gson 禁止特殊字符转码

    Map<String,String> map = new HashMap<String,String>(); map.put("url", "&a ...

  3. 将rcc.exe添加到系统Path

    rcc不是内部或外部命令搜索下rcc.exe二进制文件的位置,然后将该路径添加到path环境变量中. 在cmd中输入path,显示当前的环境变量. 然后path = %path%;C:\Qt\4.8. ...

  4. 针对portmap 的DDOS攻击

    iptables -I INPUT -p tcp --dport 111 -j DROP iptables -I INPUT -s 10.171.254.221 -p tcp --dport 111 ...

  5. 【转】Linux內核驅動之GPIO子系統(一)GPIO的使用 _蝸牛

    原文网址:http://tc.chinawin.net/it/os/article-2512b.html 一 概述 Linux內核中gpio是最簡單,最常用的資源(和interrupt ,dma,ti ...

  6. hibernate错题解析

    01 Hibernate错题分析   解析: 此题目考查的是对Hibernate中交叉连接的理解.HQL支持SQL风格的交叉连接查询,交叉连接适用于两个类之间没有定义任何关联时.在where字句中,通 ...

  7. UVA 10400 Game Show Math (dfs + 记忆化搜索)

    Problem H Game Show Math Input: standard input Output: standard output Time Limit: 15 seconds A game ...

  8. RPG JS跨平台测试

    RPG JS虽然说是跨平台的,但是在具体的测试中效果并不理想. 以官方提供的Demo为例 问题一 手机的屏幕太小,导致画面上的人物都很小,连点击都很不准确.在9寸的平板上才可以看得比较清楚. 问题二 ...

  9. grub2手动引导ubuntu

    測试机OS为ubuntu 14.04.1 LTS x86_64 磁盘分区情况为: Filesystem     1K-blocks    Used Available Use% Mounted on ...

  10. DIV 与 Table 嵌套

    当然可以了.对于DIV定义表示一块可显示 HTML 的区域. Specifies a container that renders HTML. 注释此元素在 Internet Explorer 3.0 ...