前段时间做了一个小网站,里面有个小功能感觉挺好的,在此与大家分享一下,还请各位大神不要笑话小弟的无知

此功能大概是这个样子的:点击下图中的类别名称,就可以对类别进行修改。

点击类别名称以后,原来的表格变成一个可编辑的文本框,并全选里面的内容,此时可直接进行修改。回车或者鼠标点击其他地方,提交修改内容.

如果不做修改点击别处或者按“Esc”或回车键,就会回到之前的样子,如果修改后跟其他类名重复就会有相应的提示:

如果类名没问题就会将修改后的内容显示到页面,同时会修改数据库的值。

数据库修改前              数据库修改后

用到的js代码

  1. /**********************************************
  2. 创建人:刘水镜
  3. 说明:    可编辑的表格
  4. **********************************************/
  5. $(function () {    // 相当于在页面中的body标签加上onload事件
  6. $(".caname").click(function () {   // 给页面中有caname类的标签加上click函数
  7. var objTD = $(this);
  8. var oldText = $.trim(objTD.text());  // 保存老的类别名称
  9. var input = $("<input type='text' value='" + oldText + "' />"); // 文本框的HTML代码
  10. objTD.html(input);   // 当前td的内容变为文本框
  11. // 设置文本框的点击事件失效
  12. input.click(function () {
  13. return false;
  14. });
  15. // 设置文本框的样式
  16. input.css("border-width", "0px");  //边框为0
  17. input.height(objTD.height());   //文本框的高度为当前td单元格的高度
  18. input.width(objTD.width());    // 宽度为当前td单元格的宽度
  19. input.css("font-size", "16px");    // 文本框的内容文字大小为16px
  20. input.css("text-align", "center");   // 文本居中
  21. input.trigger("focus").trigger("select");   // 全选
  22. // 文本框失去焦点时重新变为文本
  23. input.blur(function () {
  24. var newText = $(this).val(); // 修改后的名称
  25. var input_blur = $(this);
  26. // 当老的类别名称与修改后的名称不同的时候才进行数据的提交操作
  27. if (oldText != newText) {
  28. // 获取该类别名所对应的ID(序号)
  29. var caid = $.trim(objTD.prev().text());
  30. // AJAX异步更改数据库
  31. var url = "../handler/ChangeCaName.ashx?caname=" + encodeURI(encodeURI(newText)) + "&caid=" + caid + "&t=" + new Date().getTime();
  32. $.get(url, function (data) {
  33. if (data == "false") {
  34. alert("类别修改失败,请检查是否类别名称重复!");
  35. input_blur.trigger("focus").trigger("select");   // 文本框全选
  36. } else {
  37. $("#test").text("");
  38. objTD.html(newText);
  39. }
  40. });
  41. } else {
  42. // 前后文本一致,把文本框变成标签
  43. objTD.html(newText);
  44. }
  45. });
  46. // 在文本框中按下键盘某键
  47. input.keydown(function (event) {
  48. var jianzhi = event.keyCode;
  49. var input_keydown = $(this);
  50. switch (jianzhi) {
  51. case 13: // 按下回车键 ,把修改后的值提交到数据库
  52. // $("#test").text("您按下的键值是: " + jianzhi);
  53. var newText = input_keydown.val(); // 修改后的名称
  54. // 当老的类别名称与修改后的名称不同的时候才进行数据的提交操作
  55. if (oldText != newText) {
  56. // 获取该类别名所对应的ID(序号)
  57. var caid = $.trim(objTD.prev().text());
  58. // AJAX异步更改数据库
  59. var url = "../handler/ChangeCaName.ashx?caname=" + encodeURI(encodeURI(newText)) + "&caid=" + caid + "&t=" + new Date().getTime();
  60. $.get(url, function (data) {
  61. if (data == "false") {
  62. alert("类别修改失败,请检查是否类别名称重复!");
  63. input_keydown.trigger("focus").trigger("select");   // 文本框全选
  64. } else {
  65. $("#test").text("");
  66. objTD.html(newText);
  67. }
  68. });
  69. } else {
  70. // 前后文本一致,把文本框变成标签
  71. objTD.html(newText);
  72. }
  73. break;
  74. case 27: // 按下Esc键, 取消修改,把文本框变成标签
  75. $("#test").text("");
  76. objTD.html(oldText);
  77. break;
  78. }
  79. });
  80. });
  81. });
  82. // 屏蔽Enter按键
  83. $(document).keydown(function (event) {
  84. switch (event.keyCode) {
  85. case 13: return false;
  86. }
  87. });

一般处理程序代码

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using Model;using BLL;
  6. namespace Web.handler
  7. {
  8. /// <summary>
  9. /// ChangeCaName 的摘要说明
  10. /// </summary>
  11. public class ChangeCaName : IHttpHandler
  12. {
  13. public void ProcessRequest(HttpContext context)
  14. {
  15. context.Response.ContentType = "text/plain";
  16. string caid = context.Request.QueryString["caid"];
  17. string caname =context.Server.UrlDecode (context.Request.QueryString["caname"]);
  18. Category ca = new Category(caid, caname);
  19. //判断是否已有该类别名
  20. CategoryManger camgr = new CategoryManger();
  21. if (camgr.IsExist(caname))
  22. {
  23. //存在
  24. context.Response.Write("false");
  25. return;
  26. }
  27. //更改数据库类别名
  28. bool b=camgr.Update( ca);
  29. if (b)
  30. {
  31. context.Response.Write("true");
  32. }
  33. else
  34. {
  35. context.Response.Write("false");
  36. }
  37. }
  38. public bool IsReusable
  39. {
  40. get { return false; }
  41. }
  42. }
  43. }

功能很简单,但用起来却非常的方便,个人觉得很好,请各位大神不要笑话在下的才疏学浅。

另外实现此效果需要用到JQuery的函数,在此附上JQuery的下载,有需要的朋友拿去。

jQuery源文件

AJAX异步更改数据库的更多相关文章

  1. python操作三大主流数据库(6)python操作mysql⑥新闻管理后台功能的完善(增、ajax异步删除新闻、改、查)

    python操作mysql⑥新闻管理后台功能的完善(增.删.改.查)安装表单验证D:\python\python_mysql_redis_mongodb\version02>pip instal ...

  2. 使用 jQuery Ajax 异步登录,并验证用户输入信息(maven)

    使用 jQuery Ajax 异步登录,并验证用户输入信息(maven) 本篇内容: (1)上一篇是使用同步的请求实现登录,并由 Servlet 决定登陆后下一步做哪些事情,本篇使用 jQuery A ...

  3. 淘宝购物车页面 智能搜索框Ajax异步加载数据

    如果有朋友对本篇文章的一些知识点不了解的话,可以先阅读此篇文章.在这篇文章中,我大概介绍了一下构建淘宝购物车页面需要的基础知识. 这篇文章主要探讨的是智能搜索框Ajax异步加载数据.jQuery的社区 ...

  4. 触碰jQuery:AJAX异步详解

    触碰jQuery:AJAX异步详解 传送门:异步编程系列目录…… 示例源码:触碰jQuery:AJAX异步详解.rar AJAX 全称 Asynchronous JavaScript and XML( ...

  5. JSON.stringify实例应用—将对象转换成JSON类型进行AJAX异步传值

    在上一篇中,对JSON.stringify()方法有了初步的认识,并且做了一些简单的例子.本篇将进一步将JSON.stringify用在复杂些的实例中,例如如下需求: 在进jQuery AJAX异步传 ...

  6. html5+php实现文件的断点续传ajax异步上传

    html5+php实现文件的断点续传ajax异步上传 准备知识:断点续传,既然有断,那就应该有文件分割的过程,一段一段的传.以前文件无法分割,但随着HTML5新特性的引入,类似普通字符串.数组的分割, ...

  7. jQuery调用AJAX异步详解[转]

    AJAX 全称 Asynchronous JavaScript and XML(异步的 JavaScript 和 XML).它并非一种新的技术,而是以下几种原有技术的结合体. 1)   使用CSS和X ...

  8. PHP+Ajax 异步通讯注册验证

    HTML代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

  9. Mvc音乐商店demo的ajax异步删除功能总结

    刚刚从学校出来参加工作,没啥工作经验,所以各位大神们不要嘲笑哈! 来公司后要进行培训,给我们的作业中有一个使用 dapper+mvc+ajax+SQL Server 2008,来实现一个音乐商店的de ...

随机推荐

  1. Adams宏导出

    var set var=ip integer_value=1 var set var=macro_name str="" for variable_name=the_macro o ...

  2. 如何修改SQL Server 2008 R2数据库的内存

    本篇经验将和大家介绍如何修改SQL Server 2008 R2数据库的内存,希望对大家的工作和学习有所帮助! 工具/原料   SQL Sever 2008 R2数据库已安装 方法/步骤   1 打开 ...

  3. 认识MicroBit

    MicroBit是BBC(英国广播公司),为孩子们推出一款开发板,或者叫控制板,可以简单地理解为通过这块电子板,可以控制接在其外围的电子模板,可以读入数据,也可以输出数据,模拟的或数字的数据.这样一来 ...

  4. c语言中static 函数和普通函数的区别

    C程序一直由下列部分组成: 1)正文段——CPU执行的机器指令部分:一个程序只有一个副本:只读,防止程序由于意外事故而修改自身指令: 2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放 ...

  5. Obloq模块:基于ESP8266的物联网模块

    OBLOQ 物联网模块 OBLOQ模块是DFRobot公司开发的一款基于ESP8266芯片的物联网通信模块.模块使用串口(TTL UART)和Arduino(或者其他单片机)通信,支持MQTT,HTT ...

  6. mysql中的回表查询与索引覆盖

    了解一下MySQL中的回表查询与索引覆盖. 回表查询 要说回表查询,先要从InnoDB的索引实现说起.InnoDB有两大类索引,一类是聚集索引(Clustered Index),一类是普通索引(Sec ...

  7. Peewee之playhouse中的数据库连接池

    参见 http://note.youdao.com/noteshare?id=104255d91b5a00d716a713ae36e911fd 目前在学习Python库的源码,这是第二篇,比较简单的功 ...

  8. Mysql系列(五)—— 分页查询及问题优化

    一.用法 在Mysql中分页查询使用关键字limit.limit的语法如下: SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15 limit关键字带有 ...

  9. 排序算法Java代码实现(三)—— 插入排序 和 希尔排序

    因为希尔排序的核心思想是插入排序,所以本篇将两篇排序一起记录 本篇内容: 插入排序 希尔排序 (一)插入排序 算法思想: 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序 ...

  10. 费劲周折的Haskell开发环境搭建过程

    大概倒腾了一周才搭建好Haskell的开发环境,遇到了很多莫名其妙的问题. 首先,Haskell实在是够冷门,中文网站上的信息实在有限.仅有的一些安装教程分享都感觉不大靠谱,所以我还是直接去外网找吧. ...