jQuery MiniUI

 找回密码
 立即注册
查看: 6369|回复: 13
打印 上一主题 下一主题

表格编辑 [复制链接]

Rank: 1

跳转到指定楼层
楼主
发表于 2013-4-9 16:30:11 |只看该作者 |倒序浏览
//添加
url: bootPATH + "../demo/CommonLibs/EmployeeWindow.html",
                title: "新增用户", width: 600, height: 360,
                onload: function () {
                    var iframe = this.getIFrameEl();
                    var data = { action: "new"};
                    iframe.contentWindow.SetData(data);
                },
   //编辑
url: bootPATH + "../demo/CommonLibs/EmployeeWindow.html",
                    title: "编辑用户", width: 600, height: 360,
onload: function () {
                        var iframe = this.getIFrameEl();
                        var data = { action: "edit", id: row.ID };
                        iframe.contentWindow.SetData(data);                       
                    },  
            
前台得到的json 里面 id和state参数,添加和编辑的都一样,怎么回事?造成编辑后都是新添了一条记录

Rank: 8Rank: 8

沙发
发表于 2013-4-9 17:36:27 |只看该作者
你是参考我们的demo,弹出面板的多次操作一次保存?还是增加或者编辑完了实时保存的?

Rank: 1

板凳
发表于 2013-4-9 18:00:58 |只看该作者
factory 发表于 2013-4-9 17:36
你是参考我们的demo,弹出面板的多次操作一次保存?还是增加或者编辑完了实时保存的? ...

就是参考的你们的dome,编辑过实时保存,结果就新生成了一条记录……

Rank: 8Rank: 8

地板
发表于 2013-4-9 18:39:59 |只看该作者
沉默味道 发表于 2013-4-9 18:00
就是参考的你们的dome,编辑过实时保存,结果就新生成了一条记录……

你看下我后台的SaveEmployees方法吧

Rank: 1

5#
发表于 2013-4-9 21:26:37 |只看该作者
factory 发表于 2013-4-9 18:39
你看下我后台的SaveEmployees方法吧

请问后台的要怎么看

Rank: 8Rank: 8

6#
发表于 2013-4-10 09:01:04 |只看该作者
本帖最后由 factory 于 2013-4-10 09:04 编辑
沉默味道 发表于 2013-4-9 21:26
请问后台的要怎么看

下载的试用包的demo/data下有后台文件的

实时编辑之后,1,你要么更新字段,2,要么删除掉原来的那条数据,再把编辑的数据整条插入到数据库
我觉得你要么后台直接执行的插入数据,以至于原来的那条数据还在,所以出现了编辑也是新增一条数据的现象

Rank: 1

7#
发表于 2013-4-10 09:17:06 |只看该作者

附: 无论是编辑还是添加json 返回的data中的id和state都是一

本帖最后由 沉默味道 于 2013-4-10 09:18 编辑
factory 发表于 2013-4-10 09:01
下载的试用包的demo/data下有后台文件的

实时编辑之后,1,你要么更新字段,2,要么删除掉原来的那条数据 ...

public void SaveEmployees(HttpServletRequest request, HttpServletResponse response) throws Exception
{
   
    //String json = request.getParameter("data");///乱码
    String json=new String(request.getParameter("data").getBytes("ISO8859-1"),"UTF-8");
    ArrayList rows = (ArrayList)com.KTDYTH.miniui.JSON.Decode(json);

    for(int i=0,l=rows.size(); i<l; i++){
            HashMap row = (HashMap)rows.get(i);
                    
                String id = row.get("id") != null ? row.get("id").toString() : "";
        String state = row.get("_state") != null ? row.get("_state").toString() : "";
        if(state.equals("added") || id.equals(""))        //新增:id为空,或_state为added
        {
            //row.put("createtime", new Date());
            new com.KTDYTH.miniui.TestDB().InsertEmployee(row);
        }
        else if (state.equals("removed") || state.equals("deleted"))
        {
            new com.KTDYTH.miniui.TestDB().DeleteEmployee(id);
        }
        else if (state.equals("modified") || state.equals(""))        //更新:_state为空,或modified
        {
            new com.KTDYTH.miniui.TestDB().UpdateEmployee(row);


这就是我的后台代码,没改过

Rank: 8Rank: 8

8#
发表于 2013-4-10 09:32:31 |只看该作者
沉默味道 发表于 2013-4-10 09:17
public void SaveEmployees(HttpServletRequest request, HttpServletResponse response) throws Exceptio ...

_state 只有在多次操作一次保存的时候才会有用
参考:http://www.miniui.com/demo/#src=datagrid/celledit.html
你是实时操作,操作完实时保存的话,你做的操作,后台执行删除还是新增,还是修改应该很明确啊

Rank: 1

9#
发表于 2013-4-10 10:39:21 |只看该作者
factory 发表于 2013-4-10 09:32
_state 只有在多次操作一次保存的时候才会有用
参考:http://www.miniui.com/demo/#src=datagrid/celledi ...

但是我的json返回的就是没有state,和id       不用弹出表格的那个修改就有,可是用了话就没这两个参数

Rank: 8Rank: 8

10#
发表于 2013-4-10 11:26:43 |只看该作者
沉默味道 发表于 2013-4-10 10:39
但是我的json返回的就是没有state,和id       不用弹出表格的那个修改就有,可是用了话就没这两个参数 ...

1.你新增的话,需要用grid.addRow(rowdata,index)来增加
2.编辑的话 其实就是更新数据了,用grid.updateRow(row,option)来更新
比如 你弹出面板修改的是“登录名”,关闭面板返回 的数据结果是这样的
var o = {loginname:"张三"}
然后
var row = grid.getSelected();
grid.updateRow(row,o)

这样,你通过var changes = grid.getChanges()获取到的变更过的数据,都是有_state的
然后把changes 通过ajax发送到服务端,根据里面的数据的不同的_state执行不同的操作。
这样就是多次操作一次保存了,而且都是有不同操作的标识_state

Archiver|普加软件

GMT+8, 2024-11-28 03:46 , Processed in 1.044697 second(s), 10 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部