jQuery MiniUI

标题: 表格编辑 [打印本页]

作者: 沉默味道    时间: 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参数,添加和编辑的都一样,怎么回事?造成编辑后都是新添了一条记录

作者: factory    时间: 2013-4-9 17:36:27

你是参考我们的demo,弹出面板的多次操作一次保存?还是增加或者编辑完了实时保存的?
作者: 沉默味道    时间: 2013-4-9 18:00:58

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

就是参考的你们的dome,编辑过实时保存,结果就新生成了一条记录……
作者: factory    时间: 2013-4-9 18:39:59

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

你看下我后台的SaveEmployees方法吧
作者: 沉默味道    时间: 2013-4-9 21:26:37

factory 发表于 2013-4-9 18:39
你看下我后台的SaveEmployees方法吧

请问后台的要怎么看
作者: factory    时间: 2013-4-10 09:01:04

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

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

实时编辑之后,1,你要么更新字段,2,要么删除掉原来的那条数据,再把编辑的数据整条插入到数据库
我觉得你要么后台直接执行的插入数据,以至于原来的那条数据还在,所以出现了编辑也是新增一条数据的现象
作者: 沉默味道    时间: 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);


这就是我的后台代码,没改过
作者: factory    时间: 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
你是实时操作,操作完实时保存的话,你做的操作,后台执行删除还是新增,还是修改应该很明确啊
作者: 沉默味道    时间: 2013-4-10 10:39:21

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

但是我的json返回的就是没有state,和id       不用弹出表格的那个修改就有,可是用了话就没这两个参数
作者: factory    时间: 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
作者: 沉默味道    时间: 2013-4-11 17:30:53

factory 发表于 2013-4-10 11:26
1.你新增的话,需要用grid.addRow(rowdata,index)来增加
2.编辑的话 其实就是更新数据了,用grid.updateR ...

我用的是form表单   他有updata方法吗
作者: factory    时间: 2013-4-11 17:40:56

沉默味道 发表于 2013-4-11 17:30
我用的是form表单   他有updata方法吗

form没有额
作者: 沉默味道    时间: 2013-4-11 19:25:51

factory 发表于 2013-4-11 17:40
form没有额

父页面方法中数据的state参数,怎么传递到子页面form表单中
作者: factory    时间: 2013-4-12 09:20:35

沉默味道 发表于 2013-4-11 19:25
父页面方法中数据的state参数,怎么传递到子页面form表单中

http://miniui.com/bbs/forum.php? ... &extra=page%3D2
看下这里的回复

子页面获取父页面的参数的话。
windon.Owner.xxx(data)

调用父页面中的xxx()方法来传递给子页面数据




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2