经过上一篇博客,本节主要是来看实现的功能是后台的数据通过json数据传过来,前台修改的数据再传回数据库之后页面再次更新table中的数据;

图示:

实例:前台的代码

  1. <%--表格显示区--%>
  2. <table id="tt" " title="设置打分规则" class="easyui-datagrid" style="width: auto;
  3. height: 400px;" idfield="itemid" pagination="true" iconcls=" icon-save" remoteSort="false"
  4. data-options="rownumbers:true,
  5. url:'JSONData.ashx/ProcessRequest',pageSize:5,pageList:[5,10,15,20],
  6. method:'get',toolbar:'#tb' ," fitcolumns="true" striped="true">
  7. <%--url是获取数据的地址--%>
  8. <%--url:'JSON.ashx/ProcessRequest'--%>
  9. <%-- 表格标题--%>
  10. <thead >
  11. <tr >
  12. <th data-options="field:'ScoreStyleID',checkbox:true"> 打分项目类别ID</th>
  13. <th data-options="field:'ScoreStyleName',width:100",sortable:"true">打分项目类别名称</th>
  14. <th data-options="field:'ScoreStyleState',width:120,align:'right'">打分项目类别描述</th>
  15. <th data-options="field:'Score',width:120,align:'right'">打分项目单位分数</th>
  16. <th data-options="field:'ScoreItem',width:100">打分项目单位</th>
  17. <th data-options="field:'AdminID',width:100">管理员</th>
  18. <th data-options="field:'PublishDate',width:100">发布时间</th>
  19. </tr>
  20. </thead>
  21. <%--表格内容--%>
  22. <tbody>
  23.  
  24. </tbody>
  25. </table>

上面主要是设定table的属性,具体每个属性大家可以详细查中文文挡来深入学习

下面是关于增删改查的代码:

  1. var url;
  2. //添加管理员
  3. function newUser() {
  4. $('#dlg').dialog('open').dialog('setTitle', '添加管理员');//设定表头
  5. $('#fm').form('clear');//清空窗体数据
  6. document.getElementById("test").value = "add";//设定表示为后台调不同方法数据提供接口
  7.  
  8. }
  9. //修改管理员
  10. function editUser() {
  11. $('#fm').form('clear');
  12. var row = $('#tt').datagrid('getSelected');
  13. if (row) {
  14. $('#dlg').dialog('open').dialog('setTitle', '修改管理员');
  15. //绑定数据列表
  16. $('#firstname').val(row.ScoreStyleName);
  17. $('#lastname').val(row.Score);
  18. $('#unit').val(row.ScoreItem);
  19. $('#message').val(row.ScoreStyleState);
  20. $('#ID').val(row.ScoreStyleID);
  21. document.getElementById("test").value = "modify";//设定表示为后台调不同方法数据提供接口
  22. $('#fm').form('load', row);
  23.  
  24. }
  25. }
  26. //保存信息
  27. function saveUser() {
  28. //获取页面中输入的值
  29. var firstname = document.getElementById("firstname").value;
  30. var lastname = document.getElementById("lastname").value;
  31. var test = document.getElementById("test").value;
  32. var unit = document.getElementById("unit").value;;
  33. var message = document.getElementById("message").value;
  34. var ID = document.getElementById("ID").value;
  35. //var t = "firstname=" + firstname + "&lastname=" + lastname + "&unit=" + unit + "&message=" + message + "&ID=" + ID;
  36.  
  37. $('#fm').form('submit', {
  38. //设定地址与传递参数到后台
  39. url: "JSONData.ashx?firstname=" + firstname + "&lastname=" + lastname + "&unit=" + unit + "&message=" + message + "&test=" + test + "&ID=" + ID,
  40. onSubmit: function () {
  41. return $(this).form('validate');
  42. },
  43. //判断结果是否正确
  44. success: function (result) {
  45. if (result.indexOf("T") == 0) {
  46.  
  47. alert('恭喜您,信息添加成功!')
  48. $('#dlg').dialog('close'); // 关闭窗口
  49. $('#tt').datagrid('reload');
  50. }
  51. else {
  52. alert('保存失败,请您核对!')
  53. }
  54. var result = eval('(' + result + ')');
  55. if (result.success) {
  56. $('#dlg').dialog('close'); // close the dialog
  57. $('#tt').datagrid('reload');
  58. $.message.alert('提示', '保存成功!', 'info');
  59.  
  60. // reload the user data
  61. } else {
  62. //$.messager.show({
  63. // title: 'Error',
  64. // msg: result.msg
  65. //});
  66. }
  67. }
  68. });
  69. }
  70. //删除管理员
  71. function removeUser() {
  72. document.getElementById("test").value = "delete";//设定表示为后台调不同方法数据提供接口
  73. var test = document.getElementById("test").value;
  74. var row = $('#tt').datagrid('getSelected');
  75. if (row) {
  76. $.messager.confirm('提示', '你确定要删除这条信息吗?', function (r) {
  77. if (r) {
  78. $('#fm').form('submit', {
  79. url: "JSONData.ashx?ID=" + row.ScoreStyleID + "&test=" + test,
  80. onSubmit: function () {
  81. },
  82. //判断结果是否正确
  83. success: function (result) {
  84. if (result.indexOf("T") == 0) {
  85. $('#dlg').dialog('close');
  86. alert('恭喜您,信息删除成功!')
  87. // close the dialog
  88. $('#tt').datagrid('reload');
  89. //$('#fm').form('submit');
  90. }
  91. else {
  92. alert('添加失败,请重新操作!')
  93. }
  94. var result = eval('(' + result + ')');
  95.  
  96. }
  97. });
  98. }
  99. }
  100. );
  101. }
  102. }
  103. //查询并把数据传递给后台,数组
  104. function getQueryParams(queryParams) {
  105. var StartTime = $("#StartTime").datebox("getValue");
  106. var EndTime = $("#EndTime").datebox("getValue");
  107. var KeyWord = document.getElementById("KeyWord").value;
  108. var Category = $("#Category").combobox("getValue");
  109. queryParams.StartTime = StartTime;
  110. queryParams.EndTime = EndTime;
  111. queryParams.KeyWord = KeyWord;
  112. queryParams.Category = Category;
  113. return queryParams;
  114. }
  115.  
  116. //增加查询参数,重新加载表格
  117. function reloadgrid() {
  118.  
  119. //查询参数直接添加在queryParams中
  120.  
  121. var queryParams = $('#tt').datagrid('options').queryParams;
  122. getQueryParams(queryParams);
  123. $('#tt').datagrid('options').queryParams = queryParams;//传递值
  124.  
  125. $("#tt").datagrid('reload');//重新加载table
  126.  
  127. }

接下来是后台中的一般处理程序中的代码(主要是负责读取数据库中的数据)

首先是判断前台请求的是哪种方法:

  1. /// <summary>
  2. /// 条件查询公告
  3. /// </summary>
  4. /// <param name="context"></param>
  5. public void ProcessRequest(HttpContext context)//context中包含前台与后台来回传递的值
  6. {//判断前台请求的是增删改查的哪一个
  7. string command = context.Request.QueryString["test"];//前台传的标示值
  8. if (command == "add")
  9. {//调用添加方法
  10. Add(context);
  11. }
  12. else if (command == "delete")
  13. {//调用删除方法
  14. Delete(context);
  15. }
  16. else if (command == "modify")
  17. {//调用修改方法
  18. Modify(context);
  19. }
  20. else
  21. {//调用查询方法
  22. Query(context);
  23. }
  24. }

查询中的方法:

  1. //================================================================
  2. //获取分页和排序信息:页大小,页码,排序方式,排序字段
  3. int pageRows, page;
  4. pageRows = 10;
  5. page = 1;
  6. string order, sort, oderby; order = sort = oderby = "";
  7. if (null != context.Request.QueryString["rows"])
  8. {
  9. pageRows = int.Parse(context.Request.QueryString["rows"].ToString().Trim());
  10.  
  11. }
  12. if (null != context.Request.QueryString["page"])
  13. {
  14.  
  15. page = int.Parse(context.Request.QueryString["page"].ToString().Trim());
  16.  
  17. }
  18. if (null != context.Request.QueryString["sort"])
  19. {
  20.  
  21. order = context.Request.QueryString["sort"].ToString().Trim();
  22.  
  23. }
  24. if (null != context.Request.QueryString["order"])
  25. {
  26.  
  27. sort = context.Request.QueryString["order"].ToString().Trim();
  28.  
  29. }
  30.  
  31. //===================================================================
  32. //组合查询语句:条件+排序
  33. StringBuilder strWhere = new StringBuilder();
  34. if (key != "")
  35. {
  36. strWhere.AppendFormat(" ScoreStyleName like '%{0}%' and ", key);
  37. }
  38. if (category != "")
  39. {
  40. strWhere.AppendFormat(" AdminID= '{0}' and ", category);
  41. }
  42. if (startTime != "")
  43. {
  44. strWhere.AppendFormat(" PublishDate >= '{0}' and ", startTime);
  45. }
  46. if (endTime != "")
  47. {
  48. strWhere.AppendFormat(" PublishDate <= '{0}' and ", endTime);
  49. }
  50.  
  51. //删除多余的and
  52. int startindex = strWhere.ToString().LastIndexOf("and");//获取最后一个and的位置
  53. if (startindex >= 0)
  54. {
  55. strWhere.Remove(startindex, 3);//删除多余的and关键字
  56. }
  57. if (sort != "" && order != "")
  58. {
  59. //strWhere.AppendFormat(" order by {0} {1}", sort, order);//添加排序
  60. oderby = order + " " + sort;
  61. }
  62. //DataSet ds = Bnotice.GetList(strWhere.ToString()); //调用不分页的getlist
  63.  
  64. //调用分页的GetList方法
  65. DataSet ds = scorebll.GetListByPage(strWhere.ToString(), oderby, (page - 1) * pageRows + 1, page * pageRows);
  66. int count = scorebll.GetRecordCount(strWhere.ToString());//获取条数
  67. string strJson = ToJson.Dataset2Json(ds, count);//DataSet数据转化为Json数据
  68. context.Response.Write(strJson);//返回给前台页面
  69. context.Response.End();

这个过程很是漫长,在调试的过程中,遇到了各种各样的问题,主要是浏览器的缓存问题耽误了好长时间,龙哥给了大力的支持,通过实现此功能,对ajax,一般处理程序的理解深刻多了;框架的使用提高我们开发的效率;

Json+ajax数据界面不刷新,页面更加的贴近客户的需求,查询效率大大的提升。

接下来会给大家分享学习分页(自己查找资料中学习总结的知识),查询数据的分页的知识与实例。敬请期待……

Jquery EasyUI +Ajax +Json +一般处理程序 实现数据的前台与后台的交互 --- 善良公社项目的更多相关文章

  1. 记一次艰难的jquery easy-ui ajax post 体验

    分享的经验和教训是: 1.jquery easy-ui ajax post 复杂的Json给后端解析,后端如果接收和解析 2.asp.net webform jquery easy-ui datagr ...

  2. jquery easyui easyui-treegrid 使用异步加载数据

    jquery easyui easyui-treegrid 使用异步加载数据 jquery easyui easyui-treegrid 异步请求 >>>>>>&g ...

  3. 使用jQuery的$.ajax()向MVC控制器Post数据

    一整天不是在看书,就是做练习.今天还是把最难实现的怎样使用jQuery的$.ajax()向MVC控制器Post数据分享. 创建一个添加数据的存储过程: 在MVC应用程序下的Entities目录下,修改 ...

  4. jQuery使用ajax跨域请求获取数据

    jQuery使用ajax跨域请求获取数据  跨域是我在日常面试中经常会问到的问题,这词在前端界出现的频率不低,主要原因还是由于安全限制(同源策略, 即JavaScript或Cookie只能访问同域下的 ...

  5. 雷林鹏分享:jQuery EasyUI 表单 - 过滤下拉数据网格

    jQuery EasyUI 表单 - 过滤下拉数据网格 下拉数据网格(Combogrid)组件和下拉框(Combobox)组件的共同点是,除了都具有下拉面板以外,它们都是基于数据网格(Datagrid ...

  6. 利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法

    利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法. 先来个简单的实例热热身吧. 1.无参数的方法调用 asp.net code: view plaincopy to clip ...

  7. 类型:Jquery;问题:jquery调用后台带参数方法;结果:利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法。

    利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法. [WebMethod]   命名空间 1.无参数的方法调用, 注意:1.方法一定要静态方法,而且要有[WebMethod] ...

  8. 使用所见即所得文本编辑器编辑文本存入数据库后通过ajax获取服务器json_encode的数据到前台,文本内容上边的html标签不解析

    使用所见即所得文本编辑器编辑文本存入数据库后通过ajax获取服务器json_encode的数据到前台,文本内容上边的html标签不解析 因为我在前台使用了jquery的text()方法,而不是html ...

  9. JQuery EasyUI弹出对话框解决Asp.net服务器控件无法执行后台代码的方法(转)

    原文:JQuery EasyUI弹出对话框解决Asp.net服务器控件无法执行后台代码的方法 jquery-easyui是一个基于jquery的图形界面插件,利用easyui可以创建很多好看的网页界面 ...

随机推荐

  1. JAVA 第二天 基本数据类型

    在栈中可以直接分配内存的数据是基本数据类型.引用数据类型:数据的引用在栈中,但他的对象在堆中. 基本数据类型,小可转大,大转小会失去精度 第一类:逻辑型boolean 第二类:文本型char 第三类: ...

  2. python笔记五(条件判断/循环/break和continue)

    一 条件判断 if <条件判断1>: <执行1> elif <条件判断2>: <执行2> elif <条件判断3>: <执行3> ...

  3. ng-book札记——HTTP

    Angular拥有自己的HTTP库,可以用于调用外部API. 在JavaScript世界里有三种方式可以实现异步请求,Callback,Promise与Observable.Angular倾向于使用O ...

  4. Docker镜像的实现原理

    Docker 镜像是怎么实现增量的修改和维护的? 每个镜像都由很多层次构成,Docker 使用 Union FS 将这些不同的层结合到一个镜像中去. 通常 Union FS 有两个用途, 一方面可以实 ...

  5. 更新git源以便安装最新版本

    sudo add-apt-repository ppa:git-core/ppa sudo apt-get update

  6. Apache ActiveMQ实战(2)-集群

    ActiveMQ的集群 内嵌代理所引发的问题: 消息过载 管理混乱 如何解决这些问题--集群的两种方式: Master slave Broker clusters ActiveMQ的集群有两种方式: ...

  7. Android studio - Failed to find target android-18

    看了一下国外的解决方案,好多人也都遇到此类问题.看老外的聊天,由衷觉得着实的可爱,同时外国的月亮也不见得比国内的圆.以下是他们的对话(最后有一个小总结):   I have a problem wit ...

  8. Android Multimedia框架总结(二十三)MediaCodec补充及MediaMuxer引入(附案例)

    请尊重分享成果,转载请注明出处,本文来自逆流的鱼yuiop,原文链接:http://blog.csdn.net/hejjunlin/article/details/53729575 前言:前面几章都是 ...

  9. PHP + JavaScript + Ajax 实现无刷新页面加载效果

    数据源工厂 Json生成方式1 Json生成方式2 数据搬运工 数据加工师 转换类型 加工展示 结果展示 初始页面 点击按钮之后 总结 今天这个实验的思路就是实现一个无刷新的页面加载效果.具体的思路是 ...

  10. Apache shiro集群实现 (七)分布式集群系统下---cache共享

    Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...