jQuery MiniUI

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

表格弹出新窗口修改,新增数据不能传递值 [复制链接]

Rank: 2

跳转到指定楼层
楼主
发表于 2017-3-10 17:39:41 |只看该作者 |倒序浏览
function edit() {         
            var row = grid.getSelected();
            if (row) {
                mini.open({
                    url: "/sysEnum/editenum",
                    title: "编辑枚举类别", width: 600, height: 400,
                    onload: function () {
                        var iframe = this.getIFrameEl();
                        var data = { action: "edit", pk: row.pk, enumtype: row.enumtype};  
                              &&这个写法对方我想传递pk和enumtype字段的值
                        iframe.contentWindow.SetData(data);
                    },
                    ondestroy: function (action) {
                        //var iframe = this.getIFrameEl();
                        grid.reload();
                    }
                });

            } else {
                alert("请选中一条记录");
            }            
        }



////////////////////
        //标准方法接口定义
        function SetData(data) {
            if (data.action == "edit") {
                //跨页面传递的数据对象,克隆后才可以安全使用
                data = mini.clone(data);
                $("#enumtype").value = data.enumtype;
                $("#pk").value = data.pk;
            }
        }
但是没有把数据传到页面中


数据保存的C# 代码 前台没有传递 _state 元素值过来
public ActionResult SaveEnum()
        {
            String json = Request["data"];
            string lcSql = "";
            string pk = "";
            String state;
            string enumtype;
            int nInt = 0;
            try
            {
                ArrayList rows = (ArrayList)JSON.Decode(json);
                foreach (Hashtable row in rows)
                {

                    //根据记录状态,进行不同的增加、删除、修改操作
                    state = row["_state"] != null ? row["_state"].ToString() : "";
                    pk = row["pk"] != null ? row["pk"].ToString() : "";
                    //pk = (row["pk"] == null || row["pk"].ToString() == "") ? Guid.NewGuid().ToString().Substring(0,20) : row["pk"].ToString();                  
                    enumtype = (row["enumtype"] == null || row["enumtype"].ToString() == "") ? "" : row["enumtype"].ToString();
                    if (state == "added" || pk == "" )           //新增:id为空,或_state为added
                    {
                        pk = Guid.NewGuid().ToString().Substring(0, 20);
                        lcSql = "insert into cpsenum (pk,enumtype)" + " values('" + pk + "', :enumtype)";
                    }
                    else if (state == "modified" || state=="") //更新:_state为空或modified
                    {
                        lcSql = "update cpsenum set  enumtype=:enumtype where pk='" + pk + "'";
                    }
                    OracleParameter[] sqlpm = new OracleParameter[1];
                    sqlpm[0] = new OracleParameter("enumtype", OracleType.VarChar, 255);
                    sqlpm[0].Value = enumtype;
                    nInt = OraDataBase.ExecuteSql(lcSql, ConfigurationManager.AppSettings["OraNcConnectionString"], sqlpm);
                }
                return Json(new { code = "0", msg = "成功删除数据" + nInt.ToString() + "条" }, JsonRequestBehavior.AllowGet);
            }
            catch (Exception ex)
            {
                cpsWeixin.Common.LogManager.WriteLog("errDataBase", "错误" + ex.Message + "sql=" + lcSql);
                return Json(new { code = "-2", msg = "系统错误" }, JsonRequestBehavior.AllowGet);
            }
        }



Rank: 8Rank: 8

沙发
发表于 2017-3-10 17:59:03 |只看该作者
未看到你的新增方法,我只看到了edit方法,你把{ action: "edit", pk: row.pk, enumtype: row.enumtype}; 传递到了子页面,和state并没有什么关系,这是你自己传的数据,不涉及表格修改或新增,不会有_state字段

Rank: 2

板凳
发表于 2017-3-10 19:42:41 |只看该作者
felt 发表于 2017-3-10 17:59
未看到你的新增方法,我只看到了edit方法,你把{ action: "edit", pk: row.pk, enumtype: row.enumtype};  ...

后台如何判断是新增还是修改

Rank: 8Rank: 8

地板
发表于 2017-3-11 10:21:02 |只看该作者
hw_2x_vc 发表于 2017-3-10 19:42
后台如何判断是新增还是修改

var data = { action: "edit", pk: row.pk, enumtype: row.enumtype};  
这里你不是传递了action了吗,edit可以表示编辑,新增你可以用add

Rank: 2

5#
发表于 2017-3-11 11:53:12 |只看该作者
本帖最后由 hw_2x_vc 于 2017-3-11 11:57 编辑
felt 发表于 2017-3-11 10:21
var data = { action: "edit", pk: row.pk, enumtype: row.enumtype};  
这里你不是传递了action了吗,ed ...

用 action 在前台可以判断是新增还是修改
但是 提交给后台的时候 ,后台使用 state = row["_state"] != null ? row["_state"].ToString() : "";
前台不会自动把  _state 状态值 传递过来
我是不是需要增加一个 元素 来保存 action 的值
我在 前台页面 对 三个元素都是赋值了

<form id="form1" method="post">
        <input id="pk" name="pk" class="mini-hidden" required="true" />
        <input id="_state" name="_state" class="mini-hidden" required="true" />
        <div style="padding-left:11px;padding-bottom:5px;">
            <table style="table-layout:fixed;">
                <tr>
                    <td style="width:70px;">枚举类别:</td>
                    <td style="width:150px;">   
                        <input id="cps_enumtype" name="enumtype" class="mini-textbox" required="true"  emptyText="请输入类别"/>
                    </td>
                </tr>        
            </table>
        </div>      
        <div style="text-align:center;padding:10px;">               
            <a class="mini-button" style="width:60px;margin-right:20px;">确定</a>      
            <a class="mini-button" style="width:60px;">取消</a>      
        </div>        
    </form>


[{"pk":"","_state":"","enumtype":"收费项目41"}]

Rank: 8Rank: 8

6#
发表于 2017-3-13 09:37:53 |只看该作者
hw_2x_vc 发表于 2017-3-11 11:53
用 action 在前台可以判断是新增还是修改
但是 提交给后台的时候 ,后台使用 state = row["_state"] != nu ...

这里pk和_state两个字段,需要你自己放入数据,如果你赋值了,那么form.getData()肯定可以获取到,mini.encode也不会给你清空掉。
附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Rank: 2

7#
发表于 2017-3-13 19:01:55 |只看该作者
dforce 发表于 2017-3-13 09:37
这里pk和_state两个字段,需要你自己放入数据,如果你赋值了,那么form.getData()肯定可以获取到,mini.e ...

var o = form.getData();   
获取的值[{"pk":"","_state":"","enumtype":"收费项目41"}]

Rank: 2

8#
发表于 2017-3-13 19:03:02 |只看该作者
hw_2x_vc 发表于 2017-3-13 19:01
var o = form.getData();   
获取的值[{"pk":"","_state":"","enumtype":"收费项目41"}]

能说说 form.getData()的原理吗?

Rank: 8Rank: 8

9#
发表于 2017-3-14 10:22:03 |只看该作者
hw_2x_vc 发表于 2017-3-13 19:03
能说说 form.getData()的原理吗?

form.getData()
获取表单内控件的值,根据name获取
比如你表单内3个miniui控件
<input name="a" class="mini-textbox" />
<input name="b" class="mini-textbox" />
<input name="c" class="mini-textbox" />

那么获取到的就是{a:"",b:"",c:""}    具体数据根据你控件内的值。

Rank: 2

10#
发表于 2017-3-14 10:25:40 |只看该作者
felt 发表于 2017-3-14 10:22
form.getData()
获取表单内控件的值,根据name获取
比如你表单内3个miniui控件

class=“mini-hidden” 就不能获取值吗?

Archiver|普加软件

GMT+8, 2024-5-8 08:04 , Processed in 1.123462 second(s), 10 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部