市委组织部考核项目——利用EasyUi中可编辑的DataGrid控件对多行数据进行编辑并提交
http://blog.csdn.net/cjr15233661143/article/details/19041165
市委组织部考核项目中需要录入原始数据,拿开发区的数据录入举例说明,见下图,需要给 查询出的单位录入定量成绩和定性成绩,开始使用弹出框的形式逐条进行编辑,后来考虑如果每一条都需要弹出一次弹出框,每一条都需要一次保存的话,用户可能 会不方便,后来发现了easyui中有这么一个好东西,用在这里非常合适——Cell Editing in DataGrid
查询出的结果图
为了控制提交时的行和他的限制条件我在原来的基础上加上了多选框,也就是说虽然你可以在上边随便写,随便改我都没有把他们真正的保存到数据库,而是在最后
点击"保存"时才写入数据库的,而保存的条件是多选框被选择了,而且所选行的定量成绩和定性成绩都不为空。需求就这么简单,下面就是代码了,前面的查询功
能在这里就不介绍了,主要介绍保存的功能
控件的使用
- <span style="font-size:18px;"> <table id="dg" class="easyui-datagrid" style="width: 1000px; height: 280px;"
- data-options=" iconCls: 'icon-edit',
- toolbar: '#tb',
- rownumbers:true,
- singleSelect: false,
- url: 'DevelopmentRecord.ashx/ProcessRequest',
- method:'get',
- pagination:true,
- onClickCell: onClickCell">
- <thead>
- <tr>
- <th data-options="field:'ck',checkbox:true"></th>
- <th data-options="field:'CityID',width:80,hidden:'hidden'">开发区id</th>
- <th data-options="field:'DepartmentName',width:280">单位名称</th>
- <th data-
options="field:'QuantyOriginalData',width:150,editor:
{type:'numberbox',options:{min:0}}">定量成绩</th> - <th data-
options="field:'QualityOriginalData',width:150,editor:
{type:'numberbox',options:{min:0}}">定性成绩</th> - </tr>
- </thead>
- </table></span>
代码解释:
开发区id字段和单位名称是从数据库中查询出来的,所以field的内容需要与数据库中表的字段对应,而开发区id字段只是为了我们写代码方便,不需要在页面显示的字段,所以我们使用hidden:'hidden'将其隐藏;定量成绩和定性成绩这两个字段是需要编辑的,且内容需要限制为最小为0的数字,使用:editor:{type:'numberbox',options:{min:0}}
js:
- <span style="font-size:18px;"> //保存按钮,多条数据一起提交
- function saveAllData() {
- if (endEditing()) {
- //利用easyui控件本身的getChange获取新添加,删除,和修改的内容
- if ($("#dg").datagrid('getChanges').length) {
- var inserted = $("#dg").datagrid('getChanges', "inserted");
- var deleted = $("#dg").datagrid('getChanges', "deleted");
- var updated = $("#dg").datagrid('getChanges', "updated");
- var effectRow = new Object();
- if (inserted.length) {
- effectRow["inserted"] = JSON.stringify(inserted);
- }
- if (deleted.length) {
- effectRow["deleted"] = JSON.stringify(deleted);
- }
- if (updated.length) {
- effectRow["updated"] = JSON.stringify(updated);
- }
- //利用easyui控件自身的getSelections方法获取多选框被选择的行
- var row = $('#dg').datagrid('getSelections');
- if (row.length < 1) {
- alert("请至少选择一条数据!");
- return;
- }
- //必填字段
- var must;
- if (row.length > 0) {
- for (var i = 0; i < row.length; i++) {
- mustQuantyOriginalData = row[i].QuantyOriginalData;//定量成绩
- mustQualityOriginalData = row[i].QualityOriginalData;//定性成绩
- //保证定量成绩和定性成绩都不为空才能继续操作!
- if (mustQuantyOriginalData == "" || mustQuantyOriginalData == null || mustQualityOriginalData == "" || mustQualityOriginalData==null) {
- alert("成绩不能为空,请核对!");
- return;
- }
- }
- }
- //用户向一般处理程序传值
- document.getElementById("test1").value = "SaveAllData";
- var test = document.getElementById("test1").value; //方法
- //获取年份
- var yearNode = document.getElementById("year");
- var checkedYearValue = yearNode.options[yearNode.selectedIndex].text.trim();//获取下拉框选择的年份
- var data1 = new Object();//定义对象
- var obj = new Object();//定义对象
- //将内容写入对象中
- obj.yearValue = checkedYearValue;
- data1.array = row;
- data1.test = test;
- data1.obj = obj;
- //将对象转换成json字符串
- var jsonObject = JSON.stringify(data1);
- $.post("DevelopmentRecord.ashx", { action: "post", jsonObject: "" + jsonObject + "" }, function (data) {
- if (data = "true") {
- alert("保存成功!");
- $("#dg").datagrid('reload');//重新加载table
- $("#recorded").datagrid('reload');//重新加载table
- } else {
- alert("保存失败,请重新操作!")
- }
- }, "json");
- }
- }
- }</span>
代码解释:
可编辑的
DataGrid控件,关键就在这个editor属性上,还有它自带的几个方法,像getChanges(),getSelections()啦,当然还
有很多自带的方法这个大家想了解的话可以去api中查看,在这里我就不一一介绍了,其他的就按常理做就可以了,为了将此功能完整的展示给大家看,下面我也
将个个层的代码都贴了出来,如果大家有更好的框架,希望大家推荐给我,互相学习。谢啦。
一般处理程序:
根据隐藏控件的value值去一般处理程序中找对应的方法
- <span style="font-size:18px;">public void ProcessRequest(HttpContext context)
- {
- context.Response.ContentType = "text/plain";
- JObject objget = (JObject)JsonConvert.DeserializeObject(command);
- JArray array1 = objget["array"].Value<JArray>();
- String test = objget["test"].Value<String>();
- if (test == "SaveAllData")
- {
- Object Inquire = objget["obj"].Value<object>();
- SaveAllData(context, array1, Inquire);
- }
- }</span>
- public void SaveAllData(HttpContext context, JArray objget, Object Inquire)
- {
- List<DevelopmentRecordEntity> list = new List<DevelopmentRecordEntity>();
- for (int i = 0; i < objget.Count; i++)
- {
- JObject objectget = (JObject)objget[i];
- JObject Inquireget = (JObject)Inquire;
- //考核时间
- string strCheckedYearValue = Inquireget["yearValue"].ToString().Trim();
- StringBuilder strWhere1 = new StringBuilder();
- //实例化一个实体
- DevelopmentRecordEntity developEntity = new DevelopmentRecordEntity();
- ////县市区单位名称
- //string CityName = Inquireget["checkedCityName"].ToString().Trim();
- //开发区Id
- string strDevelopeId = objectget["CityID"].ToString().Trim();
- //定量成绩
- var QuantyOriginalData = objectget["QuantyOriginalData"].ToString().Trim();
- //定性成绩
- var QualityOriginalData = objectget["QualityOriginalData"].ToString().Trim();
- ////时间戳
- //PublicBLL publicBll = new PublicBLL();
- //string timestamp = publicBll.GetTime();
- //将需要保存到数据库中的数据传到实体中
- developEntity.DevelopeId = strDevelopeId;
- developEntity.QuantyOriginalData = QuantyOriginalData;
- developEntity.YearTime = strCheckedYearValue;
- //developEntity.Timestamp = timestamp;
- developEntity.QualityOriginalData = QualityOriginalData;
- //保存数据
- list.Add(developEntity);
- }
- if (developmentBll.Add(list))
- {
- context.Response.Write("true");
- }
- else
- {
- context.Response.Write("false");
- }
- }
BLL层:
- <span style="font-size:18px;"> <span style="white-space:pre"> </span>/// <summary>
- /// 保存n条数据,1-25陈金荣
- /// </summary>
- public bool Add(List<DevelopmentRecordEntity> list)
- {
- return dal.Add(list);
- }</span>
DAL层:
- <span style="font-size:18px;">/// <summary>
- /// 添加n条数据,1-25陈金荣
- /// </summary>
- public bool Add(List<DevelopmentRecordEntity> list)
- {
- bool flag = false;
- foreach (DevelopmentRecordEntity model in list)
- {
- StringBuilder strSql = new StringBuilder();
- strSql.Append("insert into T_DevelopmentRecord(");
- strSql.Append("DevelopeId,QuantyOriginalData,QuantyWeightData,QualityOriginalData,QualityWeightData,YearTime,Remarks,other2,other3,other4,other5)");
- strSql.Append(" values (");
- strSql.Append("@DevelopeId,@QuantyOriginalData,@QuantyWeightData,@QualityOriginalData,@QualityWeightData,@YearTime,@Remarks,@other2,@other3,@other4,@other5)");
- SqlParameter[] parameters = {
- new SqlParameter("@DevelopeId", SqlDbType.VarChar,50),
- new SqlParameter("@QuantyOriginalData", SqlDbType.VarChar,50),
- new SqlParameter("@QuantyWeightData", SqlDbType.VarChar,50),
- new SqlParameter("@QualityOriginalData", SqlDbType.VarChar,50),
- new SqlParameter("@QualityWeightData", SqlDbType.VarChar,50),
- new SqlParameter("@YearTime", SqlDbType.VarChar,50),
- new SqlParameter("@Remarks", SqlDbType.VarChar,500),
- //new SqlParameter("@Timestamp", SqlDbType.VarChar,50),
- //new SqlParameter("@other1", SqlDbType.VarChar,50),
- new SqlParameter("@other2", SqlDbType.VarChar,50),
- new SqlParameter("@other3", SqlDbType.VarChar,50),
- new SqlParameter("@other4", SqlDbType.VarChar,50),
- new SqlParameter("@other5", SqlDbType.VarChar,50)};
- //parameters[0].Value = model.Id;
- parameters[0].Value = model.DevelopeId;
- parameters[1].Value = model.QuantyOriginalData;
- parameters[2].Value = model.QuantyWeightData;
- parameters[3].Value = model.QualityOriginalData;
- parameters[4].Value = model.QualityWeightData;
- parameters[5].Value = model.YearTime;
- parameters[6].Value = model.Remarks;
- //parameters[7].Value = model.Timestamp;
- parameters[7].Value = model.other2;
- parameters[8].Value = model.other3;
- parameters[9].Value = model.other4;
- parameters[10].Value = model.other5;
- int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
- if (rows > 0)
- {
- flag = true;
- }
- else
- {
- flag = false;
- }
- }
- return flag;
- }</span>
easyui的这个东西挺好用的,其实也不能这么说,还要看他你能不能给我们带来方便,如果不能的话我们也不必去费劲适应easyui,我想说的是其实
这个小东东也挺拧的,有的时候你真的没办法去适应它,比如说大刚做的一个界面如果要使用它我感觉就会更完美,但是由于他那里边的内容不是死的,灵活性很好
所以到目前为止还是没想到办法用上它。这次项目是第一次接触easyui,刚开始真心的觉得它不好,因为做什么事都要去适应它,它对JSON格式也有它自
己的要求,再加上开始的时候对JSON也是一塌糊涂,所以对easyui的第一印象并不好,到后来做了几个窗体我对她的印象完全改变了,能给我们带来很大
的方便,不过事物都有两面性,它也有不好的一面,兼容性不是很好。
市委组织部考核项目——利用EasyUi中可编辑的DataGrid控件对多行数据进行编辑并提交的更多相关文章
- UniGui中使用Grid++Report报表控件子报表获取数据的方法
Grid++Report是为优秀的报表控件,子报表是其重要功能之一,但Grid++Report提供的网页报表示范主要是以页面为主的,UniGui在Delphi中以快速编写web管理软件著称,但由于资料 ...
- EasyUI中datagrid控件的使用 设置多行表头(两行或多行)
EasyUI中的datagrid控件十分强大,能生成各种复杂的报表,现在因为项目需要,需要生成一个表头两行的表,找了一些说明文档,以下用一个实例来说明一下: 第一种方法: $('#divData'). ...
- EasyUI 中 DataGrid 控件 列 如何绑定对象中的属性
EasyUI 中 DataGrid 控件 是我们经常用到的控件之一, 但是 DataGrid 控件 在绑定显示列时却不支持对象属性绑定. 模型如下: public class Manager impl ...
- 关于EasyUI中DataGrid控件的一些使用方法总结
一,DataGrid 控件的工作流程 1,通过JavaScript将一个空白的div美化成一个空白的Datagrid模板 2,Datagrid模板通过制定的Url发送请求,获取数据 ...
- 基于MVC4+EasyUI的Web开发框架经验总结(13)--DataGrid控件实现自动适应宽带高度
在默认情况下,EasyUI的DataGrid好像都没有具备自动宽度的适应功能,一般是指定像素宽度的,但是使用的人员计算机的屏幕分辨率可能不一样,因此导致有些地方显示太大或者太小,总是不能达到好的预期效 ...
- WPF中不规则窗体与WebBrowser控件的兼容问题解决办法
原文:WPF中不规则窗体与WebBrowser控件的兼容问题解决办法 引言 这几天受委托开发一个网络电视项目,要求初步先使用内嵌网页形式实现视频播放和选单,以后再考虑将网页中的所有功能整合进桌面程序. ...
- 关于如何在 Unity 的 UI 菜单中默认创建出的控件 Raycast Target 属性默认为 false
关于如何在 Unity 的 UI 菜单中默认创建出的控件 Raycast Target 属性默认为 false 我们在 Unity 中通过 UI 菜单创建的各种控件,比如 Text, Image 等, ...
- WPF中不规则窗体与WindowsFormsHost控件的兼容问题完美解决方案
首先先得瑟一下,有关WPF中不规则窗体与WindowsFormsHost控件不兼容的问题,网上给出的解决方案不能满足所有的情况,是有特定条件的,比如 WPF中不规则窗体与WebBrowser控件的兼 ...
- easyUI的datagrid控件日期列不能正确显示Json格式数据的解决方案
EasyUI是一套比较轻巧易用的Jquery控件,在使用过程中遇到一个问题,它的列表控件——datagrid, 在显示日期列的时候,由于后台返回给页面的数据是Json格式的,其中的日期字段,在后台是正 ...
随机推荐
- hdu 2030
PS:原本这道题就空了好久...今天才去查了下汉字机内码... 然后才知道了. 1—— 一个汉字在字符串中是以两个负的字符形式存储,所以本题只要把字符串中负字符的个数找出来,再 除以2 就OK了. 2 ...
- .NET快速开发平台(DevExpress)免费下载
Express开发的eXpressApp Framework为简单快速实现商业应用的提供了有效的手段.强大的模块化结构支持跨平台的特定域扩展.典型应用实例包括:商业/销售/客户关系管理系统,项目,文档 ...
- PHP安装编译配置参考
编辑安装php的参考配置: ./configure --prefix=/usr/local/php-5.6.8 --with-config-file-path=/usr/local/php-5.6.8 ...
- 数据结构 《5》----二叉搜索树 ( Binary Search Tree )
二叉树的一个重要应用就是查找. 二叉搜索树 满足如下的性质: 左子树的关键字 < 节点的关键字 < 右子树的关键字 1. Find(x) 有了上述的性质后,我们就可以像二分查找那样查找给定 ...
- CODEVS1380 没有上司的舞会 (树形DP)
f[i,0] 表示 第i个人不参加舞会 f[i,1] 表示 第i个人参加舞会 f[i,1]=sigma(f[j,0])+v[i] j 为 i 的孩子 f[i,1]=sigma(max(f[j,0] ...
- 深入理解JavaScript闭包
Closure 闭包的定义1: <JavaScript高级程序设计>定义闭包:闭包是指有权访问另一个函数作用域中的变量的函数. 创建闭包的常见方式,就是在一个函数内部创建另一个函数. 然而 ...
- USB电源管理
在USB总线接口协议中,由于涉及电源供电,因此协议中规定了完整的电源管理方案.通过USB电源管理可以实现USB设备的激活.挂起.空闲和睡眠等,从而降低无效的功率消耗,实现系统电源的有效使用和合理分配. ...
- 解决Eclipse Pydev中import时报错:Unresolved import
在安装 图像处理工具包 mahotas 后,在eclipse中尝试import mahotas时,出现Unresolved import错误,按快捷无法自动生成代码提示 但是,程序运行时可以通过,在命 ...
- Java-->List&Set
一.List集合 特点:有序可重复 List集合的猜想: 1.每个元素是不是应该有序号 index 2.addFirst.addLast.set(intdex, 对象) 3.get(index)... ...
- Java 存储过程调用
//配置文件 private static ClientServiceConfigUtil configUtil = new ClientServiceConfigUtil("/Databa ...