http://blog.csdn.net/cjr15233661143/article/details/19041165

市委组织部考核项目中需要录入原始数据,拿开发区的数据录入举例说明,见下图,需要给 查询出的单位录入定量成绩和定性成绩,开始使用弹出框的形式逐条进行编辑,后来考虑如果每一条都需要弹出一次弹出框,每一条都需要一次保存的话,用户可能 会不方便,后来发现了easyui中有这么一个好东西,用在这里非常合适——Cell Editing in DataGrid

查询出的结果图

为了控制提交时的行和他的限制条件我在原来的基础上加上了多选框,也就是说虽然你可以在上边随便写,随便改我都没有把他们真正的保存到数据库,而是在最后
点击"保存"时才写入数据库的,而保存的条件是多选框被选择了,而且所选行的定量成绩和定性成绩都不为空。需求就这么简单,下面就是代码了,前面的查询功
能在这里就不介绍了,主要介绍保存的功能

控件的使用

  1. <span style="font-size:18px;">  <table id="dg" class="easyui-datagrid" style="width: 1000px; height: 280px;"
  2. data-options=" iconCls: 'icon-edit',
  3. toolbar: '#tb',
  4. rownumbers:true,
  5. singleSelect: false,
  6. url: 'DevelopmentRecord.ashx/ProcessRequest',
  7. method:'get',
  8. pagination:true,
  9. onClickCell: onClickCell">
  10. <thead>
  11. <tr>
  12. <th data-options="field:'ck',checkbox:true"></th>
  13. <th data-options="field:'CityID',width:80,hidden:'hidden'">开发区id</th>
  14. <th data-options="field:'DepartmentName',width:280">单位名称</th>
  15. <th data-
    options="field:'QuantyOriginalData',width:150,editor:
    {type:'numberbox',options:{min:0}}">定量成绩</th>
  16. <th data-
    options="field:'QualityOriginalData',width:150,editor:
    {type:'numberbox',options:{min:0}}">定性成绩</th>
  17. </tr>
  18. </thead>
  19. </table></span>

代码解释:

开发区id字段和单位名称是从数据库中查询出来的,所以field的内容需要与数据库中表的字段对应,而开发区id字段只是为了我们写代码方便,不需要在页面显示的字段,所以我们使用hidden:'hidden'将其隐藏;定量成绩和定性成绩这两个字段是需要编辑的,且内容需要限制为最小为0的数字,使用:editor:{type:'numberbox',options:{min:0}}

js:

  1. <span style="font-size:18px;">        //保存按钮,多条数据一起提交
  2. function saveAllData() {
  3. if (endEditing()) {
  4. //利用easyui控件本身的getChange获取新添加,删除,和修改的内容
  5. if ($("#dg").datagrid('getChanges').length) {
  6. var inserted = $("#dg").datagrid('getChanges', "inserted");
  7. var deleted = $("#dg").datagrid('getChanges', "deleted");
  8. var updated = $("#dg").datagrid('getChanges', "updated");
  9. var effectRow = new Object();
  10. if (inserted.length) {
  11. effectRow["inserted"] = JSON.stringify(inserted);
  12. }
  13. if (deleted.length) {
  14. effectRow["deleted"] = JSON.stringify(deleted);
  15. }
  16. if (updated.length) {
  17. effectRow["updated"] = JSON.stringify(updated);
  18. }
  19. //利用easyui控件自身的getSelections方法获取多选框被选择的行
  20. var row = $('#dg').datagrid('getSelections');
  21. if (row.length < 1) {
  22. alert("请至少选择一条数据!");
  23. return;
  24. }
  25. //必填字段
  26. var must;
  27. if (row.length > 0) {
  28. for (var i = 0; i < row.length; i++) {
  29. mustQuantyOriginalData = row[i].QuantyOriginalData;//定量成绩
  30. mustQualityOriginalData = row[i].QualityOriginalData;//定性成绩
  31. //保证定量成绩和定性成绩都不为空才能继续操作!
  32. if (mustQuantyOriginalData == "" || mustQuantyOriginalData == null || mustQualityOriginalData == "" || mustQualityOriginalData==null) {
  33. alert("成绩不能为空,请核对!");
  34. return;
  35. }
  36. }
  37. }
  38. //用户向一般处理程序传值
  39. document.getElementById("test1").value = "SaveAllData";
  40. var test = document.getElementById("test1").value; //方法
  41. //获取年份
  42. var yearNode = document.getElementById("year");
  43. var checkedYearValue = yearNode.options[yearNode.selectedIndex].text.trim();//获取下拉框选择的年份
  44. var data1 = new Object();//定义对象
  45. var obj = new Object();//定义对象
  46. //将内容写入对象中
  47. obj.yearValue = checkedYearValue;
  48. data1.array = row;
  49. data1.test = test;
  50. data1.obj = obj;
  51. //将对象转换成json字符串
  52. var jsonObject = JSON.stringify(data1);
  53. $.post("DevelopmentRecord.ashx", { action: "post", jsonObject: "" + jsonObject + "" }, function (data) {
  54. if (data = "true") {
  55. alert("保存成功!");
  56. $("#dg").datagrid('reload');//重新加载table
  57. $("#recorded").datagrid('reload');//重新加载table
  58. } else {
  59. alert("保存失败,请重新操作!")
  60. }
  61. }, "json");
  62. }
  63. }
  64. }</span>

代码解释:

可编辑的
DataGrid控件,关键就在这个editor属性上,还有它自带的几个方法,像getChanges(),getSelections()啦,当然还
有很多自带的方法这个大家想了解的话可以去api中查看,在这里我就不一一介绍了,其他的就按常理做就可以了,为了将此功能完整的展示给大家看,下面我也
将个个层的代码都贴了出来,如果大家有更好的框架,希望大家推荐给我,互相学习。谢啦。

一般处理程序:

根据隐藏控件的value值去一般处理程序中找对应的方法

  1. <span style="font-size:18px;">public void ProcessRequest(HttpContext context)
  2. {
  3. context.Response.ContentType = "text/plain";
  4. JObject objget = (JObject)JsonConvert.DeserializeObject(command);
  5. JArray array1 = objget["array"].Value<JArray>();
  6. String test = objget["test"].Value<String>();
  7. if (test == "SaveAllData")
  8. {
  9. Object Inquire = objget["obj"].Value<object>();
  10. SaveAllData(context, array1, Inquire);
  11. }
  12. }</span>
  1. public void SaveAllData(HttpContext context, JArray objget, Object Inquire)
  2. {
  3. List<DevelopmentRecordEntity> list = new List<DevelopmentRecordEntity>();
  4. for (int i = 0; i < objget.Count; i++)
  5. {
  6. JObject objectget = (JObject)objget[i];
  7. JObject Inquireget = (JObject)Inquire;
  8. //考核时间
  9. string strCheckedYearValue = Inquireget["yearValue"].ToString().Trim();
  10. StringBuilder strWhere1 = new StringBuilder();
  11. //实例化一个实体
  12. DevelopmentRecordEntity developEntity = new DevelopmentRecordEntity();
  13. ////县市区单位名称
  14. //string CityName = Inquireget["checkedCityName"].ToString().Trim();
  15. //开发区Id
  16. string strDevelopeId = objectget["CityID"].ToString().Trim();
  17. //定量成绩
  18. var QuantyOriginalData = objectget["QuantyOriginalData"].ToString().Trim();
  19. //定性成绩
  20. var QualityOriginalData = objectget["QualityOriginalData"].ToString().Trim();
  21. ////时间戳
  22. //PublicBLL publicBll = new PublicBLL();
  23. //string timestamp = publicBll.GetTime();
  24. //将需要保存到数据库中的数据传到实体中
  25. developEntity.DevelopeId = strDevelopeId;
  26. developEntity.QuantyOriginalData = QuantyOriginalData;
  27. developEntity.YearTime = strCheckedYearValue;
  28. //developEntity.Timestamp = timestamp;
  29. developEntity.QualityOriginalData = QualityOriginalData;
  30. //保存数据
  31. list.Add(developEntity);
  32. }
  33. if (developmentBll.Add(list))
  34. {
  35. context.Response.Write("true");
  36. }
  37. else
  38. {
  39. context.Response.Write("false");
  40. }
  41. }

BLL层:

  1. <span style="font-size:18px;"> <span style="white-space:pre">   </span>/// <summary>
  2. /// 保存n条数据,1-25陈金荣
  3. /// </summary>
  4. public bool Add(List<DevelopmentRecordEntity> list)
  5. {
  6. return dal.Add(list);
  7. }</span>

DAL层:

  1. <span style="font-size:18px;">/// <summary>
  2. /// 添加n条数据,1-25陈金荣
  3. /// </summary>
  4. public bool Add(List<DevelopmentRecordEntity> list)
  5. {
  6. bool flag = false;
  7. foreach (DevelopmentRecordEntity model in list)
  8. {
  9. StringBuilder strSql = new StringBuilder();
  10. strSql.Append("insert into T_DevelopmentRecord(");
  11. strSql.Append("DevelopeId,QuantyOriginalData,QuantyWeightData,QualityOriginalData,QualityWeightData,YearTime,Remarks,other2,other3,other4,other5)");
  12. strSql.Append(" values (");
  13. strSql.Append("@DevelopeId,@QuantyOriginalData,@QuantyWeightData,@QualityOriginalData,@QualityWeightData,@YearTime,@Remarks,@other2,@other3,@other4,@other5)");
  14. SqlParameter[] parameters = {
  15. new SqlParameter("@DevelopeId", SqlDbType.VarChar,50),
  16. new SqlParameter("@QuantyOriginalData", SqlDbType.VarChar,50),
  17. new SqlParameter("@QuantyWeightData", SqlDbType.VarChar,50),
  18. new SqlParameter("@QualityOriginalData", SqlDbType.VarChar,50),
  19. new SqlParameter("@QualityWeightData", SqlDbType.VarChar,50),
  20. new SqlParameter("@YearTime", SqlDbType.VarChar,50),
  21. new SqlParameter("@Remarks", SqlDbType.VarChar,500),
  22. //new SqlParameter("@Timestamp", SqlDbType.VarChar,50),
  23. //new SqlParameter("@other1", SqlDbType.VarChar,50),
  24. new SqlParameter("@other2", SqlDbType.VarChar,50),
  25. new SqlParameter("@other3", SqlDbType.VarChar,50),
  26. new SqlParameter("@other4", SqlDbType.VarChar,50),
  27. new SqlParameter("@other5", SqlDbType.VarChar,50)};
  28. //parameters[0].Value = model.Id;
  29. parameters[0].Value = model.DevelopeId;
  30. parameters[1].Value = model.QuantyOriginalData;
  31. parameters[2].Value = model.QuantyWeightData;
  32. parameters[3].Value = model.QualityOriginalData;
  33. parameters[4].Value = model.QualityWeightData;
  34. parameters[5].Value = model.YearTime;
  35. parameters[6].Value = model.Remarks;
  36. //parameters[7].Value = model.Timestamp;
  37. parameters[7].Value = model.other2;
  38. parameters[8].Value = model.other3;
  39. parameters[9].Value = model.other4;
  40. parameters[10].Value = model.other5;
  41. int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
  42. if (rows > 0)
  43. {
  44. flag = true;
  45. }
  46. else
  47. {
  48. flag = false;
  49. }
  50. }
  51. return flag;
  52. }</span>

easyui的这个东西挺好用的,其实也不能这么说,还要看他你能不能给我们带来方便,如果不能的话我们也不必去费劲适应easyui,我想说的是其实
这个小东东也挺拧的,有的时候你真的没办法去适应它,比如说大刚做的一个界面如果要使用它我感觉就会更完美,但是由于他那里边的内容不是死的,灵活性很好
所以到目前为止还是没想到办法用上它。这次项目是第一次接触easyui,刚开始真心的觉得它不好,因为做什么事都要去适应它,它对JSON格式也有它自
己的要求,再加上开始的时候对JSON也是一塌糊涂,所以对easyui的第一印象并不好,到后来做了几个窗体我对她的印象完全改变了,能给我们带来很大
的方便,不过事物都有两面性,它也有不好的一面,兼容性不是很好。

市委组织部考核项目——利用EasyUi中可编辑的DataGrid控件对多行数据进行编辑并提交的更多相关文章

  1. UniGui中使用Grid++Report报表控件子报表获取数据的方法

    Grid++Report是为优秀的报表控件,子报表是其重要功能之一,但Grid++Report提供的网页报表示范主要是以页面为主的,UniGui在Delphi中以快速编写web管理软件著称,但由于资料 ...

  2. EasyUI中datagrid控件的使用 设置多行表头(两行或多行)

    EasyUI中的datagrid控件十分强大,能生成各种复杂的报表,现在因为项目需要,需要生成一个表头两行的表,找了一些说明文档,以下用一个实例来说明一下: 第一种方法: $('#divData'). ...

  3. EasyUI 中 DataGrid 控件 列 如何绑定对象中的属性

    EasyUI 中 DataGrid 控件 是我们经常用到的控件之一, 但是 DataGrid 控件 在绑定显示列时却不支持对象属性绑定. 模型如下: public class Manager impl ...

  4. 关于EasyUI中DataGrid控件的一些使用方法总结

    一,DataGrid         控件的工作流程 1,通过JavaScript将一个空白的div美化成一个空白的Datagrid模板 2,Datagrid模板通过制定的Url发送请求,获取数据   ...

  5. 基于MVC4+EasyUI的Web开发框架经验总结(13)--DataGrid控件实现自动适应宽带高度

    在默认情况下,EasyUI的DataGrid好像都没有具备自动宽度的适应功能,一般是指定像素宽度的,但是使用的人员计算机的屏幕分辨率可能不一样,因此导致有些地方显示太大或者太小,总是不能达到好的预期效 ...

  6. WPF中不规则窗体与WebBrowser控件的兼容问题解决办法

    原文:WPF中不规则窗体与WebBrowser控件的兼容问题解决办法 引言 这几天受委托开发一个网络电视项目,要求初步先使用内嵌网页形式实现视频播放和选单,以后再考虑将网页中的所有功能整合进桌面程序. ...

  7. 关于如何在 Unity 的 UI 菜单中默认创建出的控件 Raycast Target 属性默认为 false

    关于如何在 Unity 的 UI 菜单中默认创建出的控件 Raycast Target 属性默认为 false 我们在 Unity 中通过 UI 菜单创建的各种控件,比如 Text, Image 等, ...

  8. WPF中不规则窗体与WindowsFormsHost控件的兼容问题完美解决方案

    首先先得瑟一下,有关WPF中不规则窗体与WindowsFormsHost控件不兼容的问题,网上给出的解决方案不能满足所有的情况,是有特定条件的,比如  WPF中不规则窗体与WebBrowser控件的兼 ...

  9. easyUI的datagrid控件日期列不能正确显示Json格式数据的解决方案

    EasyUI是一套比较轻巧易用的Jquery控件,在使用过程中遇到一个问题,它的列表控件——datagrid, 在显示日期列的时候,由于后台返回给页面的数据是Json格式的,其中的日期字段,在后台是正 ...

随机推荐

  1. iOS中nil、Nil、NULL、NSNull详解(转)

    ObjC 里面的几个空值符号经常会差点把我搞死,这些基础的东西一点要弄清楚才行,以提高码农的基本素质. nil nil 是 ObjC 对象的字面空值,对应 id 类型的对象,或者使用 @interfa ...

  2. 基于HTML5+CSS3的图片旋转、无限滚动、文字跳动特效

    本文分享几种基于HTML5+CSS3实现的一些动画特效:图片旋转.无限滚动.文字跳动;实现起来均比较容易,动手来试试! 一.图片旋转 效果图如下: 这个效果实现起来其实并不困难.代码清单如下: < ...

  3. Design Patterns----简单的工厂模式

    实例: 实现一个简单的计算器.实现加减乘除等操作.. operator.h 文件 // copyright @ L.J.SHOU Mar.13, 2014 // a simple calculator ...

  4. FR #2题解

    A. 考虑把(u,v)的询问离线挂在u上,然后dfs,每次从fath[x]到[x]相当于x子树dis区间加1,x子树以外区间-1,然后维护区间和区间平方和等. 常数略大. #include<io ...

  5. Android crash特殊位置定位

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 通常情况下,在我们开发的过程中遇到的crash,可以到logcat中找原因:如果做定制App,对方用 ...

  6. asp.net mvc3.0第一个程序helloworld开发图解

    步骤一:新建asp.net mvc3.0项目 (选择Razor模板) 步骤二:创建控制器 步骤三:控制器源码内右键创建对应视图 步骤四:控制器内添加代码 步骤五:视图页面输出内容 步骤六:F5调试

  7. Web 仪表盘

    /*********************************************************************** * Web 仪表盘 * 说明: * 之前很久,都想知道 ...

  8. toLocaleString

  9. Java-->实现断点续传(下载)

    --> 断点续传: 就像迅雷下载文件一样,停止下载或关闭程序,下次下载时是从上次下载的地方开始继续进行,而不是重头开始... --> RandomAccessFile --> poi ...

  10. 转载:奇异值分解(SVD) --- 线性变换几何意义(上)

    本文转载自他人: PS:一直以来对SVD分解似懂非懂,此文为译文,原文以细致的分析+大量的可视化图形演示了SVD的几何意义.能在有限的篇幅把这个问题讲解的如此清晰,实属不易.原文举了一个简单的图像处理 ...