zoukankan      html  css  js  c++  java
  • 实例:SSH结合Easyui实现Datagrid的批量删除功能

    在我先前的基础上面添加批量删除功能。实现的效果如下

    删除成功

    通常情况下删除不应该真正删除,而是应该有一个标志flag,但flag=true表示状态可见,但flag=false表示状态不可见,为删除状态。便于日后数据库的维护和信息的查询。因此表结构添加一个flag字段

    没有改变的代码这里就不写了,发生改变的代码贴出来

    1、因为表结构发生变化。所以对应的Student.java和Student.hbm.xml发生改变

    [java] view plaincopy
     
    1. package com.model;  
    2.   
    3. public class Student {  
    4.     String studentid;// 主键  
    5.     String name;// 姓名  
    6.     String gender;// 性别  
    7.     String age;// 年龄  
    8.     String flag;//标志  
    9.   
    10.     public String getStudentid() {  
    11.         return studentid;  
    12.     }  
    13.   
    14.     public void setStudentid(String studentid) {  
    15.         this.studentid = studentid;  
    16.     }  
    17.   
    18.     public String getName() {  
    19.         return name;  
    20.     }  
    21.   
    22.     public void setName(String name) {  
    23.         this.name = name;  
    24.     }  
    25.   
    26.     public String getGender() {  
    27.         return gender;  
    28.     }  
    29.   
    30.     public void setGender(String gender) {  
    31.         this.gender = gender;  
    32.     }    
    33.   
    34.     public String getAge() {  
    35.         return age;  
    36.     }  
    37.   
    38.     public void setAge(String age) {  
    39.         this.age = age;  
    40.     }  
    41.   
    42.     public String getFlag() {  
    43.         return flag;  
    44.     }  
    45.   
    46.     public void setFlag(String flag) {  
    47.         this.flag = flag;  
    48.     }  
    49.       
    50.       
    51.   
    52. }  


    Student.hbm.xml的代码

    [html] view plaincopy
     
    1. <?xml version="1.0"?>  
    2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
    3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
    4. <!-- Generated 2013-6-23 23:31:47 by Hibernate Tools 3.4.0.CR1 -->  
    5. <hibernate-mapping>  
    6.     <class name="com.model.Student" table="STUDENT">  
    7.         <id name="studentid" type="java.lang.String">  
    8.             <column name="STUDENTID" />  
    9.             <generator class="assigned" />  
    10.         </id>  
    11.         <property name="name" type="java.lang.String">  
    12.             <column name="NAME" />  
    13.         </property>  
    14.         <property name="gender" type="java.lang.String">  
    15.             <column name="GENDER" />  
    16.         </property>  
    17.         <property name="age" type="java.lang.String">  
    18.             <column name="AGE" />  
    19.         </property>  
    20.         <property name="flag" type="java.lang.String">  
    21.             <column name="FLAG" />  
    22.         </property>  
    23.     </class>  
    24. </hibernate-mapping>  


    2、对应的Action。StudentAction

    [java] view plaincopy
     
    1. package com.action;  
    2.   
    3. import java.io.PrintWriter;  
    4. import java.util.ArrayList;  
    5. import java.util.List;  
    6.   
    7. import javax.servlet.http.HttpServletRequest;  
    8. import javax.servlet.http.HttpServletResponse;  
    9.   
    10. import net.sf.json.JSONObject;  
    11.   
    12. import org.apache.log4j.Logger;  
    13. import org.apache.struts2.ServletActionContext;  
    14.   
    15. import com.model.Student;  
    16. import com.service.StudentService;  
    17.   
    18. public class StudentAction {  
    19.     static Logger log = Logger.getLogger(StudentAction.class);  
    20.     private JSONObject jsonObj;  
    21.     private String rows;// 每页显示的记录数  
    22.     private String page;// 当前第几页  
    23.     private StudentService student_services;//String依赖注入  
    24.     private Student student;//学生  
    25.     private String parameter;//参数  
    26.     private String table;//表名  
    27.     private String field;//字段  
    28.       
    29.     private String num;//  
    30.     private String ids;//  
    31.       
    32.     //查询出所有学生信息  
    33.     public String allInfo() throws Exception {  
    34.         log.info("查询出所有学生信息");  //引用到log4j你应该加入  log4j的配置文件,不然用System.out.println();来替换  
    35.           
    36.         List list = student_services.getStudentList(page, rows);//传入参数页码和行数,获取当前页的数据  
    37.         this.toBeJson(list,student_services.getStudentTotal());//调用自己写的toBeJson方法转化为JSon格式  
    38.   
    39.         return null;  
    40.     }  
    41.       
    42.     //批量删除信息  
    43.     public String del() throws Exception{  
    44.         log.info("删除学生信息");  
    45.         log.info("循环次数:"+num);  
    46.         List list=new ArrayList();  
    47.                   
    48.         Boolean b=false;  
    49.         int temp=Integer.parseInt(num);//循环次数  
    50.         int j=0;  
    51.         for (int i = 0; i < temp; i++) {  
    52.             list.add(ids.substring(j, j+3));//将一个字符串打散成多个字符串  
    53.             j=j+4;        
    54.             log.info("==========="+list.get(i));  
    55.             student_services.deleteStudent((String) list.get(i));//根据ID主键进行删除操作  
    56.         }  
    57.         return null;  
    58.     }  
    59.       
    60.     //新增学生信息  
    61.     public String add() throws Exception{  
    62.         log.info("新增学生信息");  
    63.   
    64.         student_services.saveStudent(student);  
    65.         return null;  
    66.     }  
    67.       
    68.     //查询唯一性  
    69.     public String verify() throws Exception{  
    70.         log.info("ACTION验证唯一性");  
    71.         String s = student_services.queryBy_unique(table,field ,parameter);  
    72.         log.info("结果:" + s);  
    73.           
    74.         //将验证的结果返回JSP页面,s为1代表没有重复,为0代表有重复  
    75.         HttpServletResponse response = ServletActionContext.getResponse();  
    76.         response.setContentType("text/html;charset=utf-8");  
    77.         PrintWriter out = response.getWriter();  
    78.         out.print(s);  
    79.         out.flush();  
    80.         out.close();  
    81.   
    82.         return null;  
    83.     }  
    84.       
    85.     //转化为Json格式  
    86.        public void toBeJson(List list,int total) throws Exception{  
    87.             HttpServletResponse response = ServletActionContext.getResponse();  
    88.             HttpServletRequest request = ServletActionContext.getRequest();  
    89.               
    90.             JSONObject jobj = new JSONObject();//new一个JSON  
    91.             jobj.accumulate("total",total );//total代表一共有多少数据  
    92.             jobj.accumulate("rows", list);//row是代表显示的页的数据  
    93.   
    94.             response.setCharacterEncoding("utf-8");//指定为utf-8  
    95.             response.getWriter().write(jobj.toString());//转化为JSOn格式  
    96.               
    97.             log.info(jobj.toString());  
    98.        }  
    99.          
    100.       
    101.     public StudentService getStudent_services() {  
    102.         return student_services;  
    103.     }  
    104.   
    105.     public void setStudent_services(StudentService student_services) {  
    106.         this.student_services = student_services;  
    107.     }  
    108.   
    109.     public void setJsonObj(JSONObject jsonObj) {  
    110.         this.jsonObj = jsonObj;  
    111.     }  
    112.   
    113.     public void setRows(String rows) {  
    114.         this.rows = rows;  
    115.     }  
    116.   
    117.     public void setPage(String page) {  
    118.         this.page = page;  
    119.     }  
    120.   
    121.     public void setStudent(Student student) {  
    122.         this.student = student;  
    123.     }  
    124.   
    125.     public Student getStudent() {  
    126.         return student;  
    127.     }  
    128.   
    129.     public void setParameter(String parameter) {  
    130.         this.parameter = parameter;  
    131.     }  
    132.   
    133.     public void setTable(String table) {  
    134.         this.table = table;  
    135.     }  
    136.   
    137.     public void setField(String field) {  
    138.         this.field = field;  
    139.     }  
    140.   
    141.     public void setNum(String num) {  
    142.         this.num = num;  
    143.     }  
    144.   
    145.     public void setIds(String ids) {  
    146.         this.ids = ids;  
    147.     }  
    148.          
    149.       
    150.       
    151. }  


    3、对应的接口StudentService

    [java] view plaincopy
     
    1. package com.service;  
    2.   
    3. import java.util.List;  
    4.   
    5. import com.model.Student;  
    6.   
    7. public interface StudentService {  
    8.      public List getStudentList(String page,String rows) throws Exception;//根据第几页获取,每页几行获取数据   
    9.      public int getStudentTotal() throws Exception;//统计一共有多少数据  
    10.      public void saveStudent(Student student)throws Exception;//新增学生信息   
    11.      public String queryBy_unique(String table,String field ,String parameter) throws Exception;//验证唯一性  
    12.      public void deleteStudent(String ids) throws Exception;//删除学生信息   
    13.        
    14. }  


    4、对应的接口实现类,从43行开始的del()方法用循环的方式输出多个id,进行批量删除

    [java] view plaincopy
     
    1. package com.serviceImpl;  
    2.   
    3. import java.util.List;  
    4.   
    5. import org.apache.log4j.Logger;  
    6. import org.hibernate.Criteria;  
    7. import org.hibernate.Query;  
    8. import org.hibernate.SessionFactory;  
    9. import org.hibernate.criterion.Restrictions;  
    10.   
    11. import com.model.Student;  
    12. import com.service.StudentService;  
    13.   
    14. public class StudentServiceImpl implements StudentService {  
    15.     Logger log=Logger.getLogger(this.getClass());  
    16.     private SessionFactory sessionFactory;  
    17.       
    18.     // 根据第几页获取,每页几行获取数据  
    19.     public List getStudentList(String page, String rows) {  
    20.           
    21.         //当为缺省值的时候进行赋值  
    22.         int currentpage = Integer.parseInt((page == null || page == "0") ? "1": page);//第几页  
    23.         int pagesize = Integer.parseInt((rows == null || rows == "0") ? "10": rows);//每页多少行  
    24.         //查询学生信息,顺便按学号进行排序  
    25.         List list = this.sessionFactory.getCurrentSession().createQuery("from Student where flag='true'  order by studentid")  
    26.                        .setFirstResult((currentpage - 1) * pagesize).setMaxResults(pagesize).list();  
    27.         //setFirstResult 是设置开始查找处。setFirstResult的值 (当前页面-1)X每页条数  
    28.         //设置每页最多显示的条数  setMaxResults每页的条数了  
    29.         return list;  
    30.     }  
    31.   
    32.     // 统计一共有多少数据  
    33.     public int getStudentTotal() throws Exception {  
    34.         return this.sessionFactory.getCurrentSession().find("from Student where flag='true'").size();  
    35.     }  
    36.       
    37.     // 新增学生信息  
    38.     public void saveStudent(Student student) throws Exception {  
    39.         student.setFlag("true");  
    40.         this.sessionFactory.getCurrentSession().save(student);  
    41.           
    42.     }  
    43.       
    44.     //判断是否具有唯一性  
    45.     public String queryBy_unique(String table,String field ,String parameter) throws Exception {  
    46.         System.out.println("===============验证唯一性=========");  
    47.         String s="select * from "+table +" t where t."+field+"='"+parameter+"'";  
    48.         System.out.println("SQL语句:"+s);  
    49.         Query query = this.sessionFactory.getCurrentSession().createSQLQuery(s);  
    50.          
    51.         int n=query.list().size();  
    52.         if(n==0)//如果集合的数量为0,说明没有重复,具有唯一性  
    53.         {  
    54.           return "1";//返回值为1,代表具有唯一性      
    55.         }         
    56.         return "0";//返回值为0,代表已经有了,重复了  
    57.     }  
    58.       
    59.     //进行删除操作  
    60.     public void deleteStudent(String ids) throws Exception {  
    61.         log.info("删除学生信息");  
    62.         Student student=this.queryStudent(ids);  
    63.         student.setFlag("false");  
    64.         this.sessionFactory.getCurrentSession().update(student);  
    65.     }  
    66.       
    67.     //根据学生主键查询学生信息  
    68.     public Student queryStudent(String id) throws Exception{  
    69.         log.info("根据学生主键查询学生信息");  
    70.         Criteria criteria=this.sessionFactory.getCurrentSession().createCriteria(Student.class);  
    71.         criteria.add(Restrictions.eq("studentid", id));  
    72.         Student student=(Student) criteria.list().get(0);  
    73.         return student;  
    74.           
    75.     }  
    76.       
    77.     public SessionFactory getSessionFactory() {  
    78.         return sessionFactory;  
    79.     }  
    80.   
    81.     public void setSessionFactory(SessionFactory sessionFactory) {  
    82.         this.sessionFactory = sessionFactory;  
    83.     }  
    84.   
    85.       
    86.       
    87.       
    88. }  


    5、对应的JSP页面index.jsp

    [java] view plaincopy
     
    1. <%@ page language="java" pageEncoding="utf-8" isELIgnored="false"%>  
    2. <%  
    3.     String path = request.getContextPath();  
    4. %>  
    5. <%@ taglib prefix="s" uri="/struts-tags"%>  
    6. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
    7. <html>  
    8. <head>  
    9. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
    10. <title>Easyui</title>  
    11.   
    12. <!-- 引入Jquery -->  
    13. <script type="text/javascript" src="<%=path%>/js/easyui/jquery-1.8.0.min.js" charset="utf-8"></script>  
    14. <!-- 引入Jquery_easyui -->  
    15. <script type="text/javascript" src="<%=path%>/js/easyui/jquery.easyui.min.js" charset="utf-8"></script>  
    16. <!-- 引入easyUi国际化--中文 -->  
    17. <script type="text/javascript" src="<%=path%>/js/easyui/locale/easyui-lang-zh_CN.js" charset="utf-8"></script>  
    18. <!-- 引入easyUi默认的CSS格式--蓝色 -->  
    19. <link rel="stylesheet" type="text/css" href="<%=path%>/js/easyui/themes/default/easyui.css" />  
    20. <!-- 引入easyUi小图标 -->  
    21. <link rel="stylesheet" type="text/css" href="<%=path%>/js/easyui/themes/icon.css" />  
    22.   
    23. <!-- 引入对应的JS,切记一定要放在Jquery.js和Jquery_Easyui.js后面,因为里面需要调用他们,建议放在最后面 -->  
    24. <script type="text/javascript" src="<%=path%>/index.js" charset="utf-8"></script>  
    25.   
    26. </head>  
    27. <body>  
    28.     <h2>  
    29.         <b>easyui的DataGrid实例</b>  
    30.     </h2>  
    31.   
    32.     <table id="mydatagrid">  
    33.         <thead>  
    34.             <tr>  
    35.                 <th data-options="field:'studentid',100,align:'center'">学生学号</th>  
    36.                 <th data-options="field:'name',100,align:'center'">姓名</th>  
    37.                 <th data-options="field:'gender',100,align:'center'">性别</th>  
    38.                 <th data-options="field:'age',100,align:'center'">年龄</th>  
    39.             </tr>  
    40.         </thead>  
    41.     </table>  
    42.     <!-- 显示添加按钮的Div -->  
    43.     <div id="easyui_toolbar" style="padding: 2px 0px 2px 15px; height: auto">  
    44.         <a href="#" id="easyui_add" class="easyui-linkbutton" iconCls="icon-add" plain="true">添加学生信息</a>  
    45.         <a href="#" id="deltable" class="easyui-linkbutton"   iconCls="icon-remove" plain="true">批量删除</a>  
    46.     </div>  
    47.   
    48.     <!-- 添加学生信息的表单       -->  
    49.     <div id="addDlg" class="easyui-dialog" style=" 580px; height: 350px; padding: 10px 20px" closed="true" buttons="#addDlgBtn">  
    50.         <form id="addForm" method="post">  
    51.             <table>  
    52.                 <tr>  
    53.                     <td>学生主键</td>  
    54.                     <td>  
    55.                       <input name="student.studentid" id="studentid" class="easyui-validatebox" required="true" missingMessage="学生主键不能为空">  
    56.                     </td>  
    57.                     <td>  
    58.                         <!-- 存放提示重复信息的div -->  
    59.                         <div id="xianshi1" style="float: left"></div>  
    60.                         <div style="float: left"> </div>  
    61.                         <div id="xianshi2" style="font-size: 14px; color: #FF0000; float: left"></div>  
    62.                     </td>  
    63.                 </tr>  
    64.                 <tr>  
    65.                     <td>姓名</td>  
    66.                     <td>  
    67.                       <input name="student.name" id="name" class="easyui-validatebox" required="true" missingMessage="姓名不能为空">  
    68.                     </td>  
    69.                 </tr>  
    70.                 <tr>  
    71.                     <td>性别</td>  
    72.                     <td>  
    73.                         <!-- 使用Easyui中的combobox -->   
    74.                         <select class="easyui-combobox" style=" 155px;" name="student.gender" id="gender" data-options="panelHeight:'auto'">  
    75.                             <option value="男">男</option>  
    76.                             <option value="女">女</option>  
    77.                        </select>  
    78.                     </td>  
    79.                 </tr>  
    80.                 <tr>  
    81.                     <td>年龄</td>  
    82.                     <td>  
    83.                       <input name="student.age" id="age" class="easyui-validatebox">  
    84.                     </td>  
    85.                 </tr>  
    86.             </table>  
    87.         </form>  
    88.     </div>  
    89.     <!-- 保存学生信息的按钮,被Jquery设置,当没被调用的时候不显示     -->  
    90.     <div id="addDlgBtn">  
    91.         <a href="#" id="addSaveBooktimecode" class="easyui-linkbutton" iconCls="icon-ok" onclick="add_ok()">确认</a>   
    92.         <a href="#" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#addDlg').dialog('close')">取消</a>  
    93.     </div>  
    94.   
    95. </body>  
    96. </html>  


    6、对应的JavaScript页面。index.js

    [javascript] view plaincopy
     
      1.   var isClickOk=true;//判断的变量  
      2. $(function() {  
      3.     //datagrid设置参数  
      4.     $('#mydatagrid').datagrid({  
      5.         title : 'datagrid实例',  
      6.         iconCls : 'icon-ok',  
      7.         width : 600,  
      8.         pageSize : 5,//默认选择的分页是每页5行数据  
      9.         pageList : [ 5, 10, 15, 20 ],//可以选择的分页集合  
      10.         nowrap : true,//设置为true,当数据长度超出列宽时将会自动截取  
      11.         striped : true,//设置为true将交替显示行背景。  
      12.         collapsible : true,//显示可折叠按钮  
      13.         toolbar:"#easyui_toolbar",//在添加 增添、删除、修改操作的按钮要用到这个  
      14.         url:'studentallInfo.action',//url调用Action方法  
      15.         loadMsg : '数据装载中......',  
      16.         //singleSelect:true,//为true时只能选择单行 为了实现批量删除必须隐去  
      17.         fitColumns:true,//允许表格自动缩放,以适应父容器  
      18.         sortName : 'studentid',//当数据表格初始化时以哪一列来排序  
      19.         sortOrder : 'asc',//定义排序顺序,可以是'asc'或者'desc'(正序或者倒序)。  
      20.         remoteSort : false,  
      21.              frozenColumns : [ [ {  
      22.             field : 'ck',  
      23.             checkbox : true  
      24.         } ] ],   
      25.         pagination : true,//分页  
      26.         rownumbers : true//行数  
      27.     });   
      28.       
      29.     //当点击添加学生信息的时候触发  
      30.     $("#easyui_add").click(function() {  
      31.             $("#xianshi1").empty();//清除上次出现的图标1  
      32.         $("#xianshi2").empty();//清除上次出现的图标2  
      33.         $('#addDlg').dialog('open').dialog('setTitle', '添加学生信息');//打开对话框          
      34.         $('#addForm').form('clear');  
      35.     });       
      36.       
      37.     //当光标移开焦点的时候进行重复验证  
      38.     $("#studentid").blur(function(){              
      39.     jQuery.ajax({   //使用Ajax异步验证主键是否重复  
      40.     type : "post",  
      41.     url : "studentverify.action?table=Student&field=studentid¶meter="+$('#studentid').val(),  
      42.     dataType:'json',  
      43.     success : function(s){    
      44.            if($('#studentid').val()==""){//当为主键为空的时候什么都不显示,因为Easyui的Validate里面已经自动方法限制  
      45.               
      46.            }  
      47.            else if( s == "1" )//当返回值为1,表示在数据库中没有找到重复的主键  
      48.         {   isClickOk=true;  
      49.             $("#xianshi1").empty();  
      50.             var txt1="<img src="+"'imgs/agree_ok.gif'"+"/>";//引入打勾图标的路径  
      51.             $("#xianshi1").append(txt1);//在id为xianshi1里面加载打勾图标  
      52.             $("#xianshi2").empty();  
      53.             $("#xianshi2").append("未被使用");//在di为xianshi2中加载“未被使用”这四个字  
      54.         }  
      55.            else   
      56.         {  
      57.             $("#xianshi1").empty();  
      58.             isClickOk=false;  
      59.             var txt1="<img src="+"'imgs/agree_no.gif'"+"/>"//引入打叉图标的路径  
      60.             $("#xianshi1").append(txt1);//在id为xianshi1里面加载打叉图标  
      61.             $("#xianshi2").empty();  
      62.             $("#xianshi2").append("已被使用");//在id为xianshi2里面加载“已被使用”四个字                 
      63.         }  
      64.     }  
      65. });  
      66. });  
      67.       
      68.     /********** 点击删除按钮开始 ***********/     
      69.     $('#deltable').click(function(){  
      70.         var array = $('#mydatagrid').datagrid('getSelections');  
      71.         var id2="";  
      72.         var num=array.length;//获取要删除信息的个数  
      73.         for(var i=0; i<array.length; i++){//组成一个字符串,ID主键之间用逗号隔开  
      74.             if(i!=array.length-1){  
      75.                 id2=id2+array[i].studentid+",";  
      76.              }else{  
      77.                  id2=id2+array[i].studentid;  
      78.              }   
      79.         }   
      80.         var selected = $('#mydatagrid').datagrid('getSelected');  
      81.         if (array != "") {  
      82.             $.messager.defaults={ok:"确定",cancel:"取消"};   
      83.             $.messager.confirm('', '是否要删除该信息?', function(r){  
      84.                 if (r){  
      85.                     $.post("studentdel.action",  
      86.                     {  ids:id2,num:num},function(response){  
      87.                         if(response=="-1"){  
      88.                             $.messager.alert('操作提示',"删除失败",'error');  
      89.                         }else{  
      90.                             $('#mydatagrid').datagrid({url:"studentallInfo.action"});  
      91.                             $.messager.alert('操作提示',"删除成功",'info');  
      92.                         }  
      93.                     });  
      94.                 }  
      95.             });  
      96.         }else{  
      97.             $.messager.alert('',"请先选择要删除的信息!");  
      98.         }  
      99.           
      100.     });  
      101.     /********** 删除按钮结束 ***********/  
      102.       
      103. });  
      104.   
      105. //添加信息点击保存的时候触发此函数  
      106. function add_ok(){        
      107.     $.messager.defaults={ok:"确定",cancel:"取消"};   
      108.     $.messager.confirm('Confirm', '您确定增加?', function(r){//使用确定,取消的选择框  
      109.         if (r){  
      110.             $('#addForm').form('submit',{//引入Easyui的Form  
      111.                 url:"studentadd.action",//URL指向添加的Action  
      112.                 onSubmit: function(){  
      113.                     if(isClickOk==false){//当主键重复的时候先前就已经被设置为false,如果为false就不提交,显示提示框信息不能重复  
      114.                         $.messager.alert('操作提示', '主键不能重复!','error');  
      115.                         return false;  
      116.                     }                 
      117.                     else if($('#addForm').form('validate')){//判断Easyui的Validate如果都没错误就同意提交  
      118.                         $.messager.alert('操作提示', '添加信息成功!','info');  
      119.                         return true;  
      120.                     }else{//如果Easyui的Validate的验证有一个不完整就不提交  
      121.                         $.messager.alert('操作提示', '信息填写不完整!','error');  
      122.                         return false;     
      123.                         }                                 
      124.                 }  
      125.             });  
      126.             $('#mydatagrid').datagrid({url:'studentallInfo.action'});//实现Datagrid重新刷新效果  
      127.             $('#addDlg').dialog('close');//关闭对话框  
      128.               }       
      129.     });   
      130. }  
  • 相关阅读:
    10个你可能不知道的JavaScript小技巧
    JS实现rgb与16进制颜色相互转换
    JavaScript 计算两个颜色叠加值
    软件测试定义和目的(1)
    服务器查看系统日记
    SQL Server 2012 安装成功后找不到SQL server Management
    windowns 10 安装 win64_11gR2_database
    C#获得当前目录和执行目录及执行文件的路径
    卸载yaml,重新安装的坑
    IIS的卸载和安装
  • 原文地址:https://www.cnblogs.com/henuyuxiang/p/4282984.html
Copyright © 2011-2022 走看看