表格弹出新窗口修改,新增数据不能传递值
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;
sqlpm = new OracleParameter("enumtype", OracleType.VarChar, 255);
sqlpm.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);
}
}
未看到你的新增方法,我只看到了edit方法,你把{ action: "edit", pk: row.pk, enumtype: row.enumtype}; 传递到了子页面,和state并没有什么关系,这是你自己传的数据,不涉及表格修改或新增,不会有_state字段 felt 发表于 2017-3-10 17:59 static/image/common/back.gif
未看到你的新增方法,我只看到了edit方法,你把{ action: "edit", pk: row.pk, enumtype: row.enumtype}; ...
后台如何判断是新增还是修改 hw_2x_vc 发表于 2017-3-10 19:42 static/image/common/back.gif
后台如何判断是新增还是修改
var data = { action: "edit", pk: row.pk, enumtype: row.enumtype};
这里你不是传递了action了吗,edit可以表示编辑,新增你可以用add 本帖最后由 hw_2x_vc 于 2017-3-11 11:57 编辑
felt 发表于 2017-3-11 10:21 static/image/common/back.gif
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"}]
hw_2x_vc 发表于 2017-3-11 11:53 static/image/common/back.gif
用 action 在前台可以判断是新增还是修改
但是 提交给后台的时候 ,后台使用 state = row["_state"] != nu ...
这里pk和_state两个字段,需要你自己放入数据,如果你赋值了,那么form.getData()肯定可以获取到,mini.encode也不会给你清空掉。 dforce 发表于 2017-3-13 09:37 static/image/common/back.gif
这里pk和_state两个字段,需要你自己放入数据,如果你赋值了,那么form.getData()肯定可以获取到,mini.e ...
var o = form.getData();
获取的值[{"pk":"","_state":"","enumtype":"收费项目41"}]
hw_2x_vc 发表于 2017-3-13 19:01 static/image/common/back.gif
var o = form.getData();
获取的值[{"pk":"","_state":"","enumtype":"收费项目41"}]
能说说 form.getData()的原理吗? hw_2x_vc 发表于 2017-3-13 19:03 static/image/common/back.gif
能说说 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:""} 具体数据根据你控件内的值。 felt 发表于 2017-3-14 10:22 static/image/common/back.gif
form.getData()
获取表单内控件的值,根据name获取
比如你表单内3个miniui控件
class=“mini-hidden” 就不能获取值吗?
页:
[1]
2