前面的实例中, 是将整个修改的页面全部放在一个页面中,一般在开发中,最好将二者至于两个界面中。
首先在修改的表单的设计代码处:在div中添加一个iframe:
<div id="editDiv">
<iframe id="frmEdit" frameborder="0" width="100%" src="javascript:void(0)">
</iframe>
</div>
重新创建一个ShowEdit.aspx:
<script src="../js/jquery-easyui-1.3.1/jquery-1.8.0.min.js" type="text/javascript"></script>
<script type="text/javascript">
function subFrm() {
//走异步提交代码
$.post("Edit.ashx", $("#form1").serializeArray(), function (data) {
if (data == "ok") {
//告诉父容器,我活干完了,关闭对话框,刷新列表
window.parent.window.afterEditSucess();
}
});
}
</script>
<body>
<form id="form1" runat="server">
<div>
<input type="hidden" name="hidId" value="<%= HidId %>"/>
<table>
<tr>
<td>新闻标题</td><td><input type="text" name="txtEditTitle" id="txtEditTitle" value="<%= Title %>"/></td>
</tr>
<tr>
<td>新闻发布人</td><td><input type="text" name="txtEditPeople" id="txtEditPeople" value="<%= People %>"/></td>
</tr>
</table>
</div>
</form>
</body>
ShowEdit.aspx.cs:
public partial class ShowEdit : System.Web.UI.Page
{
public string HidId { get; set; }
public string Title { get; set; }
public string People { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
int id = int.Parse(Request["id"]??"0");
BLL.HKSJ_Main mainServer = new BLL.HKSJ_Main();
var item = mainServer.GetModel(id);
HidId = item.ID.ToString();
Title = item.title;
People = item.people;
}
}
如下图:在提交修改的表单的代码处,进行如下操作:
//提交修改的表单
function subEditFrom(){
//将修改的表单提交到后台
// var editFrmData=$("#editFrm").serializeArray();
// $.post("Edit.ashx",editFrmData,function(data){
// if(data=="OK")
// {
// //如果后台返回成功
// //关闭对话框
// $("#editDiv").dialog("close");
// //刷新列表
// initTableList();
// }
// else
// {
// alert(data);
// }
// });
//让子容器的表单提交
//jq对象转化为dom对象
//contentWindow可以拿到iframe标签的对象
$("#frmEdit")[0].contentWindow.subFrm();
}
//由子容器调用的方法
function afterEditSuccess(){
//关闭对话框
$("#editDiv").dialog("close");
//刷新列表
initTableList();
}