var childWindow = $("#editFrame")[0].contentWindow;//获取子窗体的window对象.
childWindow.subForm();

$("#editFrame")得到frame

[0].contentWindow//frame的子窗体,将JQUERY对象转化为DOM对象

subForm();//字窗体定义的方法

-----------------------------------------------------

子窗体调用父窗体的方法

function afterEdit(data) {
if (data == "ok") {
window.parent.afterEdit(data);
}
}

-------------------------------------

@model CZBK.ItcastOA.Model.RoleInfo

@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>编辑角色信息</title>
<script src="~/Scripts/jquery-1.7.1.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script type="text/javascript">
function subForm() {
$("#editForm").submit();
}
function afterEdit(data) {
if (data == "ok") {
window.parent.afterEdit(data);
}
}
</script>
</head>
<body>
@using (Ajax.BeginForm("EditRoleInfo", "RoleInfo", new { }, new AjaxOptions() { HttpMethod = "post", OnSuccess = "afterEdit" }, new {id="editForm"}))
{
@Html.ValidationSummary(true) <fieldset>
<legend>RoleInfo</legend> @Html.HiddenFor(model => model.ID) <div class="editor-label">
@Html.LabelFor(model => model.RoleName, "角色名称")
</div>
<div class="editor-field">
@Html.EditorFor(model => model.RoleName)
@Html.ValidationMessageFor(model => model.RoleName)
</div> <div class="editor-label">
@Html.LabelFor(model => model.DelFlag)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.DelFlag)
@Html.ValidationMessageFor(model => model.DelFlag)
</div> <div class="editor-label">
@Html.LabelFor(model => model.SubTime)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.SubTime)
@Html.ValidationMessageFor(model => model.SubTime)
</div> <div class="editor-label">
@Html.LabelFor(model => model.Remark)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Remark)
@Html.ValidationMessageFor(model => model.Remark)
</div> <div class="editor-label">
@Html.LabelFor(model => model.ModifiedOn)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ModifiedOn)
@Html.ValidationMessageFor(model => model.ModifiedOn)
</div> <div class="editor-label">
@Html.LabelFor(model => model.Sort)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Sort)
@Html.ValidationMessageFor(model => model.Sort)
</div> </fieldset>
} <div>
@Html.ActionLink("Back to List", "Index")
</div>
</body>
</html>

子窗体

@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>角色管理</title>
<link href="~/Content/themes/default/easyui.css" rel="stylesheet" />
<link href="~/Content/themes/icon.css" rel="stylesheet" />
<script src="~/Scripts/jquery-1.7.1.min.js"></script>
<script src="~/Scripts/jquery.easyui.min.js"></script>
<script src="~/Scripts/easyui-lang-zh_CN.js"></script>
<script src="~/Scripts/datapattern.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script type="text/javascript">
$(function () {
loadData();
$("#addDiv").css("display", "none");
$("#editDiv").css("display", "none"); });
function loadData(pars) {
$('#tt').datagrid({
url: '/RoleInfo/GetRoleInfo',
title: '角色数据表格',
width: 700,
height: 400,
fitColumns: true, //列自适应
nowrap: false,
idField: 'ID',//主键列的列明
loadMsg: '正在加载角色的信息...',
pagination: true,//是否有分页
singleSelect: false,//是否单行选择
pageSize: 5,//页大小,一页多少条数据
pageNumber: 1,//当前页,默认的
pageList: [5, 10, 15],
queryParams: pars,//往后台传递参数
columns: [[//c.UserName, c.UserPass, c.Email, c.RegTime
{ field: 'ck', checkbox: true, align: 'left', width: 50 },
{ field: 'ID', title: '编号', width: 80 },
{ field: 'RoleName', title: '角色名称', width: 120 },
{ field: 'Sort', title: '排序', width: 120 },
{ field: 'Remark', title: '备注', width: 120 },
{
field: 'SubTime', title: '时间', width: 80, align: 'right',
formatter: function (value, row, index) {
return (eval(value.replace(/\/Date\((\d+)\)\//gi, "new Date($1)"))).pattern("yyyy-M-d");
}
}
]],
toolbar: [{
id: 'btnDelete',
text: '删除',
iconCls: 'icon-remove',
handler: function () { deleteInfo();
}
}, {
id: 'btnAdd',
text: '添加',
iconCls: 'icon-add',
handler: function () { addInfo();
}
}, {
id: 'btnEdit',
text: '编辑',
iconCls: 'icon-edit',
handler: function () { eidtInfo();
}
}],
});
}
//编辑用户信息
function eidtInfo() {
var rows = $('#tt').datagrid('getSelections');
if (rows.length != 1) {
//alert("请选择要修改的商品!");
$.messager.alert("提醒", "请选择要编辑的1条记录!", "error");
return;
}
// $.post("/UserInfo/GetUserInfoModel", { "id": rows[0].ID }, function (data) {
//if (data.msg == "ok") {
//$("#txtUName").val(data.serverData.UName);
//$("#txtUPwd").val(data.serverData.UPwd);
//$("#txtRemark").val(data.serverData.Remark);
//$("#txtSort").val(data.serverData.Sort);
//$("#txtSubTime").val(ChangeDateFormat(data.serverData.SubTime));
//$("#txtDelFlag").val(data.serverData.DelFlag);
//$("#txtId").val(data.serverData.ID);
$("#editFrame").attr("src", "/RoleInfo/ShowEditInfo/?id=" + rows[0].ID);
$("#editDiv").css("display", "block"); $('#editDiv').dialog({
title: "编辑角色信息",
width: 300,
height: 350,
collapsible: true,
resizable: true,
modal: true,
buttons: [{
text: '确定',
iconCls: 'icon-ok',
handler: function () {
//$("#editForm").submit();//提交表单
var childWindow = $("#editFrame")[0].contentWindow;//获取子窗体的window对象.
childWindow.subForm();
}
}, {
text: '取消',
handler: function () {
$('#editDiv').dialog('close');
}
}]
}); }
//修改完成以后调用该方法
function afterEdit(data) {
if (data == "ok") {
$('#editDiv').dialog('close');
$('#tt').datagrid('reload');
} else {
$.messager.alert("提醒", "修改数据错误!!", "error");
}
} //添加信息
function addInfo() {
$("#addDiv").css("display", "block");
$('#addDiv').dialog({
title: "添加角色信息",
width: 300,
height: 300,
collapsible: true,
resizable: true,
modal: true,
buttons: [{
text: '确定',
iconCls: 'icon-ok',
handler: function () {
$("#addForm").submit();//提交表单
}
}, {
text: '取消',
handler: function () {
$('#addDiv').dialog('close');
}
}]
}); }
//添加完成以后调用该方法
function afterAdd(data) {
if (data == "ok") {
$("#addForm input").val("");
$('#addDiv').dialog('close');
$('#tt').datagrid('reload');
} else {
$.messager.alert("提示", "添加失败", "error");
}
}
//删除用户数据
function deleteInfo() {
var rows = $('#tt').datagrid('getSelections');
if (!rows || rows.length == 0) {
//alert("请选择要修改的商品!");
$.messager.alert("提醒", "请选择要删除的记录!", "error");
return;
}
$.messager.confirm("提示", "确定要删除该记录?", function (r) {
if (r) {
var strId = "";
for (var i = 0; i < rows.length; i++) {
strId = strId + rows[i].ID + ",";//1,2,3,
}
strId = strId.substr(0, strId.length - 1);
$.post("/RoleInfo/DeleteRoleInfo", { "strId": strId }, function (data) {
if (data == "ok") {
$('#tt').datagrid('clearSelections');
$('#tt').datagrid('reload');
//loadData();
} else {
$.messager.alert("提醒", "删除的记录失败!", "error");
}
});
}
});
} //将序列化成json格式后日期(毫秒数)转成日期格式
function ChangeDateFormat(cellval) {
var date = new Date(parseInt(cellval.replace("/Date(", "").replace(")/", ""), 10));
var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
return date.getFullYear() + "-" + month + "-" + currentDate;
}
</script>
</head>
<body>
<div> <table id="tt" style="width: 700px;" title="标题,可以使用代码进行初始化,也可以使用这种属性的方式" iconcls="icon-edit">
</table>
</div>
<!---------------添加用户信息--------------------->
<div id="addDiv">
@using(Ajax.BeginForm("AddRoleInfo", "RoleInfo", new { }, new AjaxOptions() {HttpMethod="post", OnSuccess="afterAdd"}, new {id="addForm"})){
<table>
<tr><td>角色名称</td><td><input type="text" name="RoleName" /></td></tr>
<tr><td>排序</td><td><input type="text" name="Sort" /></td></tr>
<tr><td>备注</td><td><input type="text" name="Remark" /></td></tr> </table>
}
</div>
<!---------------添加用户信息结束---------------------> <!---------------修改用户信息--------------------->
<div id="editDiv">
<iframe id="editFrame" scrolling="no" width="100%" height="100%" frameborder="0"></iframe>
@* @using(Ajax.BeginForm("EditUserInfo", "UserInfo", new { }, new AjaxOptions() {HttpMethod="post", OnSuccess="afterEdit"}, new {id="editForm"})){
<input type="hidden" name="SubTime" id="txtSubTime" />
<input type="hidden" name="DelFlag" id="txtDelFlag" />
<input type="hidden" name="ID" id="txtId" />
<table>
<tr><td>用户名</td><td><input type="text" name="UName" id="txtUName" /></td></tr>
<tr><td>密码</td><td><input type="text" name="UPwd" id="txtUPwd" /></td></tr>
<tr><td>备注</td><td><input type="text" name="Remark" id="txtRemark" /></td></tr>
<tr><td>排序</td><td><input type="text" name="Sort" id="txtSort" /></td></tr> </table>
}*@
</div> <!---------------修改用户信息结束--------------------->
</body>
</html>

主窗体

js子窗体、父窗体方法互调的更多相关文章

  1. Vue子父组件方法互调

    讲干货,不啰嗦,大家在做vue开发过程中经常遇到父组件需要调用子组件方法或者子组件需要调用父组件的方法的情况,现做一下总结,希望对大家有所帮助. 父组件调用子组件方法: 1.设置子组件的ref,父组件 ...

  2. js中子页面父页面方法和变量相互调用

    (1)子页面调用父页面的方法或者变量: window.parent.方法()或者变量名window.parent相当于定位到父页面 之后的操作和在父页面中写代码一样写 window.parent.aa ...

  3. js中子页面父页面方法 变量相互调用(转)

    原文:https://www.cnblogs.com/huangshuqiang/p/5734358.html (1)子页面调用父页面的方法或者变量: window.parent.方法()或者变量名w ...

  4. js中子页面父页面方法 变量相互调用

    (1)子页面调用父页面的方法或者变量: window.parent.方法()或者变量名window.parent相当于定位到父页面  之后的操作和在父页面中写代码一样写 window.parent.a ...

  5. C# 子窗体点击按钮产生的新子窗体放在父窗体里

    情景展示: 父窗体Form1,左边是按钮,右边是panel(放置子窗体) 父窗体点击按钮,在panel显示第一个子窗体AA, AA有个按钮,点击按钮,是第二个子窗体ZZ, 怎样将AA的子窗体ZZ也显示 ...

  6. 不创建父窗体的情况下他其他窗体的信息显示在第一个打开的窗体!(winfrom)

    公司使用vs2008做的东西,用vs2017都打不开了(编译错误) 叫我更新一下,我看了一下,08的项目 和 winform 差不多  如何就用winfrom来做了 (winform  很久没碰了,, ...

  7. uniapp和vue 父向子传值、传方法及子向父传值。(一看就会超级简约)

    1.父向子传值:父组件在引用子组件时通过自定义属性绑定自身需要传递的值(数据),子组件用props:[  '自定义'  ]接收即可使用(props里数据是只读模式).(简约版:子绑定父的属性并用pro ...

  8. 子窗体与父窗体调用对方js方法

    有时候为了减少一个页面内的代码量,会将部分内容放到子窗体中,如后台管理中用iframe来进行管理 <div> <iframe id="dviframe" src= ...

  9. winform里操作打开在panel里的form窗体,子窗体操作同级子窗体或者父窗体的方法

    最近开始了一个winform项目,原先一直都是web项目.遇到个问题,就是在框架内,左侧和中间的main都是用panel来实现的form,就是把form窗体打开到panel里,实现左侧是导航,中间是操 ...

随机推荐

  1. Windows Phone Data Protection

    To encrypt the PIN // Convert the PIN to a byte[]. byte[] PinByte = Encoding.UTF8.GetBytes(TBPin.Tex ...

  2. js打印功能

    1.window.print方式: jsp页面 打印按钮:       <input type="button" value="打印" onclick=& ...

  3. android-GridView控件的使用

    GridView 按行列方式显示多个组件(二维布局界面) 数据源(集合)-适配器(SimpleAdapter)-视图界面(GridView),加载适配器-配置监听器(OnItemClickListen ...

  4. Sqoop_mysql,hive,hdfs导入导出操作

    前言: 搭建环境,这里使用cdh版hadoop+hive+sqoop+mysql 下载 hadoop-2.5.0-cdh5.3.6.tar.gz hive-0.13.1-cdh5.3.6.tar.gz ...

  5. javascript平时小例子③(setInterval使用1)

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  6. 20145334赵文豪 《Java程序设计》第1周学习总结

    20145334赵文豪 <Java程序设计>第1周学习总结 教材学习内容总结 第一周的学习在紧张中结束了,我们这周了解了各门课的基本内容与授课形式,在第一周java课程的的学习中我们学习了 ...

  7. Python 文件编码(文件乱码)

    IndentationError: unindent does not match any outer indentation level 文件未对齐,在记事本打开. 乱码原因:源码文件的编码格式为u ...

  8. 400 Bad Request(angluarJs)

    今天做一个编辑的功能的时候,像后台传递一个实体,结果报400 Bad Request的错误....找了好久也没发现错误,老是报(不支持GET方式提交),检查好多遍我都是用的POST...不知道问题出在 ...

  9. MySQL- -Join语法解析与性能分析

    Mysql Join语法解析与性能分析 一.Join语法概述 join 用于多表中字段之间的联系,语法如下: ... FROM table1 INNER|LEFT|RIGHT JOIN table2 ...

  10. java中PriorityQueue优先级队列使用方法

    优先级队列是不同于先进先出队列的另一种队列.每次从队列中取出的是具有最高优先权的元素. PriorityQueue是从JDK1.5开始提供的新的数据结构接口. 如果不提供Comparator的话,优先 ...