`

jqury-easyui DataGrid 整合struts2增删查改入门实例(四)----可编辑表格

阅读更多

好了,什么也先别说,还是先看效果........

 
添加




删除

查询





由于这个事例比上个难度大一点,所以也参考别人的一点布局和代码,不足之处还是多。DEMO做好了,关键就是靠大家进一步开发个性化的UI.






easyDemo3.jsp代码如下:
<h2>datagrid入门之四</h2>
      <table id="tt">
      </table>
      <div id="query" class="easyui-window" title="查询" style="padding: 10px;width: 360px;height:100;"
    iconCls="icon-search" closed="true" maximizable="false" minimizable="false" collapsible="false">
        <div>
            <table>
                <tr>
                    <td>
                        <select name="select" id="ss">
                            <option value="id">学号</option>
                            <option value="name">姓名</option>
                            <option value="qq">QQ</option>
                        </select>
                    </td>
                    <td><input type="text" name="id" id="qq"  required="true"></td>
                    <td><a class="easyui-linkbutton" iconCls="icon-search" href="javascript:void(0);" onclick="query()">查询</a></td>
                </tr>
            </table>
        </div>
    </div>

easyInfo.js代码如下:

$(function(){
    $('#tt').datagrid({
        title:'CRUD小例子',
        iconCls:'icon-ok',
        width:650,
        height:350,
        pageSize:5,
        pageList:[5,10,15,20],
        striped: true,
        collapsible:true,
        url:'stuInfo.action',
        singleSelect:true,
        columns:[[
            {field:'id',title:'学号',width:50,rowspan:2,align:'center',editor:'numberbox'},
            {field:'name',title:'姓名',width:50,rowspan:2,align:'center',editor:'text'},
            {field:'email',title:'邮箱',width:120,rowspan:2,align:'center',editor:{
                type:'validatebox',
                options:{
                    validType:'email'
                }
            }},
            {field:'qq',title:'QQ',width:80,rowspan:2,align:'center',editor:'numberbox'},
            {field:'birthday',title:'出生日期',width:120,rowspan:2,align:'center',editor:{
                type:'datebox',
            }},
            {field:'address',title:'居住地',width:70,rowspan:2,align:'center',editor:'text'},
            {field:'operator',title:'操作列',width:70,rowspan:2,align:'center',
                formatter:function(value,row,index){
                    if(row.editing){
                        var s ='<a href="javascript:void(0);" onclick="saveRow('+index+')" style="text-decoration: none;color: #800080;">保存</a>  ';
                        var c ='<a href="javascript:void(0);" onclick="cancelRow('+index+')" style="text-decoration: none;color: #800080;">取消</a>';
                    return s+c;
                    }else{
                        var e = '<a href="javascript:void(0);" onclick="editRow('+index+')" style="text-decoration: none;color: #800080;">编辑</a> ';
                         var d = '<a href="javascript:void(0);" onclick="deleteRow('+index+')" style="text-decoration: none;color: #800080;">删除</a>';
                    return e+d;
                    }
                }
            }
        ]],
        pagination:true,
        rownumbers:true,
        toolbar:[{
             text:'增加',
             iconCls:'icon-add',
             handler:addRow
          },'-',{
              text:'查询',
              iconCls:'icon-search',
              handler:function(){
                  $('#query').window('open');
              }
          }
        ],
        onBeforeEdit:function(index,row){
            row.editing = true;
            $('#tt').datagrid('refreshRow',index);
            count++;
        },
        onAfterEdit:function(index,row){
            row.editing = true;
            $('#tt').datagrid('refreshRow',index);
            count--;
        },
        onCancelEdit:function(index,row){
            row.editing = false;
            $('#tt').datagrid('refreshRow',index);
            count--;
        }
    });
});
    var count = 0;
    function editRow(index){
        $('#tt').datagrid('beginEdit',index);
    }
    function deleteRow(index){
        var selected = $('#tt').datagrid('getSelected');
        if(selected){
        $.messager.confirm('删除','确认删除吗?',function(d){
            if(d){
            /*将数据删除
             * $('#tt').datagrid('deleteRow',index);
             * */    
             $.ajax({
                      type:"POST",
                     url:"delInfo.action",
                      data:"id="+selected.id,
                     success:function(){}
                });
                $('#tt').datagrid('reload');
            }
        });
        }
    }
    function saveRow(index){
        $('#tt').datagrid('endEdit',index);
        /*
         * 将数据保存到数据库
         * */
        var select = $('#tt').datagrid('getSelected');
        var arr =new Array(); //将信息保存在数组中
        arr[0]= select.id;
        arr[1]= select.name;
        arr[2]= select.email;
        arr[3]= select.qq;
        arr[4]= select.birthday;
        arr[5]=select.address;
        if(select){
            $.ajax({
            type:'POST',
            url:'queryId.action',
            data:'id='+select.id,
            success:function(data){
                if(data=='0'){
                    $.messager.alert('error','学号'+select.id+'已存在,请重新编辑','error',function(){
                        $('#tt').datagrid('beginEdit', index);
                    });
                }else{
                    save(arr,index);
                }
            }
        });
        }
    }
    function cancelRow(index){
        $('#tt').datagrid('cancelEdit',index);
    }
    function addRow(){
       if(count>0){
        $.messager.alert('warning','当前还有'+count+'记录正在编辑,请保存','warning');
        return ;
        }else{
         $('#tt').datagrid('appendRow',{
             id:'',
             name:'',
             email:'',
             qq:'',
             birthday:'',
             address:'',
             action:''
         });    
        }
        var lastIndex = $('#tt').datagrid('getRows').length-1;
        $('#tt').datagrid('beginEdit', lastIndex);
    }
    
    function save(arr,index){
        $.ajax({
            type:'POST',
            url:'saveInfo.action',
            data:'arr='+arr,
            success:function(data){
                if(data){
                    $.messager.alert('warning',data,'warning',function(){
                        $('#tt').datagrid('beginEdit', index);
                    })
                }else{
                    $('#tt').datagrid('reload');
                }
            }
        });
    }
    function query(){
        var queryParams = $('#tt').datagrid('options').queryParams;
        queryParams.queryWord = $('#qq').val();
        queryParams.queryType = $('#ss').val();
        $('#tt').datagrid({
            url:'queryInfo.action'
        });
        $('#query').window('close');
    }
   

Action层
  StudentInfoAction.java代码如下
    package org.easyui;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.easyui.dao.EasyDao;
import org.easyui.dao.EasyDaoImpl;
import org.easyui.model.StudentInfo;

import com.opensymphony.xwork2.ActionSupport;

public class StudentInfoAction extends ActionSupport implements ServletRequestAware,ServletResponseAware {

    private static final long serialVersionUID = -4583025314633553684L;
    private HttpServletRequest request;
    private HttpServletResponse response;
    private static EasyDao dao = new EasyDaoImpl();
    private int total;
    private List<Object> rows;
    
    public int getTotal() {
        return total;
    }
    public List<Object> getRows() {
        return rows;
    }
    public void setTotal(int total) {
        this.total = total;
    }
    public void setRows(List<Object> rows) {
        this.rows = rows;
    }
    public void setServletRequest(HttpServletRequest request) {
        this.request = request;
    }
    @Override
    public String execute() throws Exception {
        return super.execute();
    }
    public String  list(){
        int page = Integer.parseInt(request.getParameter("page"));
        int pageSize =Integer.parseInt(request.getParameter("rows"));
        
        this.total = dao.getStuTotal();
        this.rows = new ArrayList<Object>();
        List<StudentInfo> stus = dao.getStuInfo(page, pageSize);
        for(StudentInfo stu:stus){
            Map<String,Object> map = new HashMap<String, Object>();
            map.put("id", stu.getId());
            map.put("name", stu.getName());
            map.put("email", stu.getEmail());
            map.put("qq",stu.getQq());
            map.put("birthday", stu.getBirthday());
            map.put("address", stu.getAddress());
            this.rows.add(map);
        }
        return SUCCESS;
    }
    public String queryStuInfo(){
        String type = request.getParameter("queryType");
        String keyword = request.getParameter("queryWord");
        System.out.println(type+"  "+keyword);
        this.total = dao.getStuTotal(type, keyword);
        List<StudentInfo> stus = dao.queryStuInfo(type, keyword);
        this.rows = new ArrayList<Object>();
        for(StudentInfo stu:stus){
            Map<String,Object> map = new HashMap<String, Object>();
            map.put("id", stu.getId());
            map.put("name", stu.getName());
            map.put("email", stu.getEmail());
            map.put("qq",stu.getQq());
            map.put("birthday", stu.getBirthday());
            map.put("address", stu.getAddress());
            this.rows.add(map);
        }
        return SUCCESS;
    }
    public void setServletResponse(HttpServletResponse response) {
        this.response = response;
    }
    
}

EasyuiCRUD.java代码如下:
package org.easyui;

import java.io.IOException;
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.easyui.dao.EasyDao;
import org.easyui.dao.EasyDaoImpl;
import org.easyui.model.Student;
import org.easyui.model.StudentInfo;

import com.opensymphony.xwork2.ActionSupport;

public class EasyuiCRUD extends ActionSupport implements ServletRequestAware,ServletResponseAware {
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    private  HttpServletRequest request;
    private HttpServletResponse response;
    private static     EasyDao dao = new EasyDaoImpl();
    public void setServletRequest(HttpServletRequest request) {
        this.request = request;
    }
    @Override
    public String execute() throws Exception {
        return SUCCESS;
    }
    public String addInfo() throws IOException{
        
        String name = request.getParameter("name");
        int age = Integer.parseInt(request.getParameter("age"));
        String sex =  request.getParameter("sex");
        String birthday = request.getParameter("birthday");
        String className = request.getParameter("className");

        
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Student student = new Student();
        student.setName(name);
        student.setAge(age);
        student.setSex(sex.toCharArray()[0]);
        student.setClassName(className);
        try {
            student.setBirthday(sdf.parse(birthday));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        dao.addStudent(student);
        
        
        return SUCCESS;
        
    }
    public String delInfo(){
        String id = request.getParameter("id");
        dao.del(Integer.parseInt(id));
        return null;
    }
    public String updateInfo(){
        String id = request.getParameter("id");
        String name = request.getParameter("name");
        int age = Integer.parseInt(request.getParameter("age"));
        String sex =  request.getParameter("sex");
        String birthday = request.getParameter("birthday");
        String className = request.getParameter("className");

        
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Student student = new Student();
        student.setId(Integer.parseInt(id));
        student.setName(name);
        student.setAge(age);
        student.setSex(sex.toCharArray()[0]);
        student.setClassName(className);
        try {
            student.setBirthday(sdf.parse(birthday));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        dao.updateStudent(student);
        return SUCCESS;
    }
    public String queryId() throws IOException{
        int id =Integer.parseInt(request.getParameter("id"));
        if(dao.queryId(id)){
            response.getWriter().print("0");
        }else{
            
            response.getWriter().print("1");
        }
        return null;
    }
    public String saveInfo() throws ParseException, IOException{
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        String[]  arr =request.getParameterValues("arr");
        String[] b = arr[0].split(",");
        if(b.length>5){
        int id = Integer.parseInt(b[0]);
        String name = b[1];
        String email = b[2];
        int qq =Integer.parseInt(b[3]);
        Date birthday = sdf.parse(b[4]);
        String address = b[5];
        
        StudentInfo stu = new StudentInfo();
        stu.setId(id);
        stu.setName(name);
        stu.setEmail(email);
        stu.setBirthday(birthday);
        stu.setQq(qq);
        stu.setAddress(address);
        dao.addStudentInfo(stu);
        }else{
            response.setContentType("text/html;charset=utf-8");
            response.getWriter().print("请将信息输入完整");
        }
        return null;
    }
    public String delStudentInfo(){
        int id = Integer.parseInt(request.getParameter("id"));
        dao.delInfo(id);
        return null;
    }
    public void setServletResponse(HttpServletResponse response) {
        this.response = response;
        
    }
    
}
分享到:
评论
3 楼 me_xyz 2011-11-14  
好东西啊!就是图挂了
2 楼 zheshou 2011-08-13  
敢请兄台,公布源码,好东西
1 楼 archie2010 2011-03-21  
兄弟,这个的下载地址呢?

相关推荐

    jquery-easyui-1.5.2.rar

    EasyUI 是一个基于 jQuery 的前端框架,用于快速开发简洁、美观、可交互的网页应用。它提供了丰富的组件,包括布局、表格、对话框、菜单、表单、按钮等,极大地简化了网页界面的构建过程。在"jquery-easyui-1.5.2....

    jquery-easyui 前端开发框架

    5. **数据绑定**:与后端数据源紧密结合,通过简单的配置即可实现数据的增删改查操作,减轻了前后端交互的复杂性。 二、jQuery EasyUI 主要组件详解: 1. **Dialog**:弹出对话框,用于展示独立的内容,支持拖动、...

    jqueryEasyUI

    **jQuery EasyUI 知识点详解** jQuery EasyUI 是一个基于 jQuery 的前端框架,它提供了一系列的 UI 组件,使得开发者能够快速构建出美观且功能丰富的 Web 应用程序。这个框架大大简化了网页界面的设计工作,使得...

    jqury-api jQueryAPI1.4

    2. **链式操作**:jQuery对象返回的是jQuery实例,可以连续调用多个方法,如`$("#element").hide().fadeIn(1000)`,先隐藏元素,然后渐显,两个操作之间无需创建新的jQuery对象。 3. **DOM操作**:jQuery提供了便利...

    JQuery UI包括(1.0.5、1.2、1.3、1.7、1.8、1.9)等版本另附文档

    2.jQuery and jQuery UI Reference 1.2 API.zip; 3.jQuery UI 1.9带给我们的惊喜.zip; 4.jQuery.ui.docs.rar; 5.jquery-easyui-1.0.5.zip; 6.jquery-easyui-1.2.ZIP; 7.jQuery-easyui-docs.rar; 8.jquery-ui-...

    jQury-DOM篇学习笔记

    2. `after()`和`before()`用于在元素外部插入,它们分别在元素之后和之前添加内容。例如,`$("#element").after("新内容&lt;/p&gt;")`会在选中元素后面插入文本,`before()`则是相反的操作。 3. `prepend()`和`prependTo...

    jQury-行冻结

    2. **CSS定位**:行冻结的核心是通过CSS来实现视觉上的“冻结”。利用`position: fixed`属性可以使元素相对于浏览器窗口定位,即使页面滚动也不会移动。然而,这会导致元素与表格其余部分的相对位置关系发生变化,...

    jquery-3.4.1.zip

    jquery 最新未压缩版本。版本号:3.4.1 。 jQuery是一个快速,小型且功能丰富的JavaScript库。借助易于使用的API(可在多种浏览器中使用),使HTML文档的遍历和操作,事件处理,动画和Ajax等事情变得更加简单。

    Jqury-ajax.rar_java html 交互_jqury _jqury ajax html

    jQuery 是一个广泛使用的JavaScript库,它极大地简化了JavaScript的DOM操作、事件处理、动画制作以及Ajax交互。在“jQuery-ajax.rar”这个压缩包中,我们很显然会涉及到使用jQuery进行AJAX(Asynchronous JavaScript...

    模仿jQury-简单的选择器封装

    我们可以创建一个新的构造函数,如`MyJQObject`,并返回它的实例: ```javascript function MyJQObject(elements) { this.elements = elements || []; } MyJQObject.prototype = { // 在这里添加类似jQuery的...

    dtree+jquery 动态实现无限树形菜单 (包括增删改查)

    本主题聚焦于使用dtree与jQuery库动态实现无限层级的树形菜单,并涵盖增删改查的基本功能。dtree是一款基于jQuery的插件,它提供了丰富的API和灵活的配置选项,使得在网页上创建交互式树形菜单变得简单易行。 首先...

    jquery easyui 官方图标文件

    jQuery EasyUI 是一个基于 jQuery 的轻量级前端框架,它为开发者提供了丰富的组件和便捷的API,用于构建功能丰富的Web应用程序。在EasyUI中,图标是界面设计的重要元素,能够帮助用户快速识别和理解功能。"jquery ...

    Jqury拖动实例(25种实例)

    在这个"jQuery拖动实例(25种实例)"中,我们将探讨如何利用jQuery实现类似Google应用中的拖放效果。拖放功能在现代网页设计中非常常见,比如在文件管理、日历应用或者界面元素布局中都有其身影。 首先,jQuery的...

    jqury特效--图片点击放大效果(源码)

    top: e.pageY - $('#zoomed').height() / 2, left: e.pageX - $('#zoomed').width() / 2 }); }); // 鼠标离开时,隐藏放大图 $('#zoomed').mouseleave(function() { $(this).addClass('hidden'); }); }); `...

    模仿jQury选择器--模块化-代码统一封装

    - 模块化开发是将复杂项目拆分为可重用、可独立测试的组件,有利于代码的维护和扩展。在JavaScript中,我们可以使用CommonJS(如Node.js环境)、AMD(异步模块定义,如RequireJS)或ES6的模块语法(import/export)...

    jqury的表格布局

    在"jQuery的表格布局"这个主题中,我们主要关注的是如何利用jQuery和相关技术来创建动态、响应式的表格布局,特别是通过AJAX实现无刷新的数据加载和更新。 首先,表格布局在网页设计中扮演着重要的角色,它用于展示...

    jquery-3.4.1.js

    jQuery是一款简化前端开发,对js的优化.使js书写更加简便,提高开发效率.为了避免大家有时候找不到相关资源,特分享出来,供大家使用.

    jquery-3.3.1.js/min.js

    《jQuery 3.3.1:JavaScript库的基石》 jQuery,这个小巧而强大的JavaScript库,自2006年发布以来,一直是Web开发...无论是在大型项目还是小型应用中,jQuery都扮演着不可或缺的角色,为现代Web开发带来了极大的便利。

    jQuery对table表格进行增删改查

    总结了一下对table的增删改查,写一篇留着以后自己recode。 1.首先我自己写了一个简单的div布局。 2.实现几个用标签做的按钮的功能 分别是新增 修改 删除 查询和返回。 代码如下 html+css(原谅我写在一起吧。。...

    锋利的jqury实例

    《锋利的jQuery实例》是一本专注于jQuery实践应用的教程,旨在帮助开发者深入理解和熟练运用jQuery库进行网页交互设计。jQuery是一个广泛使用的JavaScript库,它极大地简化了JavaScript的DOM操作、事件处理、动画...

Global site tag (gtag.js) - Google Analytics