FineUI 官方论坛

标题: 官方示例中能不能作一个IFrame选项卡之间相互传值的例子? [打印本页]

作者: lzp4881    时间: 2019-9-6 14:38
标题: 官方示例中能不能作一个IFrame选项卡之间相互传值的例子?




能不能做一个IFrame选项卡子页面与子页面之间,子页面与父页面之间相互传值、取值的例子,我折腾了很久,实在做不好。
还有我发现在有IFrame选项卡的页面中,用PageContext.RegisterStartupScript(ActiveWindow.GetHideRefreshReference());不起作用。不知道是不是BUG,还是我没用好?

作者: sanshi    时间: 2019-9-6 18:05
先看下这个示例,有子页面和父页面相互传值的写法:https://mvc.fineui.com/#/GridOther/NewTabHideUpdate
作者: lzp4881    时间: 2019-9-6 19:46
@section body {

    @(F.TabStrip().IsFluid(true).CssClass("blockpanel").ID("TabStrip1").Height(500).ShowBorder(true).ActiveTabIndex(0)
        .Tabs(
            F.Tab().ID("Tab1").Title("标签一").EnableIFrame(true).IFrameUrl(Url.Content("~/TabStrip/IFrameDisabled/Tab1")),
            F.Tab().ID("Tab2").EnableIFrame(true).BodyPadding(10).Enabled(false).IFrameUrl(Url.Content("~/Panel/PanelGroup")).Title("标签二"),
            F.Tab().ID("Tab3").EnableIFrame(true).BodyPadding(10).Enabled(false).IFrameUrl(Url.Content("~/Panel/Panel")).Title("标签三")
        )
    )
    <br>
}
比如这个例子,tab1 tab2 tab3 里面各有一个表单,我要在tab1提交保存后返回一个id,如何把id传递给tab2 和tab3里面的label呢?
作者: lzp4881    时间: 2019-9-9 16:32
sanshi 发表于 2019-9-6 18:05
先看下这个示例,有子页面和父页面相互传值的写法:https://mvc.fineui.com/#/GridOther/NewTabHideUpdate ...

这个例子不适用,它这个是子页面向父页面传值,我要的是子页面向另一个子页面传值。
作者: sanshi    时间: 2019-9-10 10:53
lzp4881 发表于 2019-9-9 16:32
这个例子不适用,它这个是子页面向父页面传值,我要的是子页面向另一个子页面传值。 ...

没仔细看吧,这里就是向父页面传值
[attach]12109[/attach]

作者: lzp4881    时间: 2019-9-10 12:57
sanshi 发表于 2019-9-10 10:53
没仔细看吧,这里就是向父页面传值

所以我说这个不适用,我要的是子页面向另一个子页面传值,不是子页面向父页面传值,而且是服务器端传给客户端,不是客户端传给服务器端。
作者: lzp4881    时间: 2019-9-10 13:22
本帖最后由 lzp4881 于 2019-9-10 14:05 编辑

试想一下这个场景,一个人力资源管理系统,除了基本信息表以外,还应该有工作信息、教育信息、家庭关系等表,是一多对的关系。所以录入时只能分开录入,不能同时录入,先录入完基本信息,再分别录入其它各项,所以要用到Tab,为了便于阅读,又用了IFrame,但是当我在tab1里面把基本信息录入完保存后,却怎么也无法把保存数据库后生成的id传给tab2和tab3,请问应该怎么解决这个问题?图在下面。
作者: lzp4881    时间: 2019-9-10 14:03
[attach]12110[/attach]

作者: sanshi    时间: 2019-9-11 16:42
lzp4881 发表于 2019-9-10 13:22
试想一下这个场景,一个人力资源管理系统,除了基本信息表以外,还应该有工作信息、教育信息、家庭关系等表 ...

考虑一个变通的方法,页面第一次加载时直接向数据库插入一个空记录并返回ID,把这个ID保存到页面上,以后对每个TAB的操作就统一为更新数据中的这个记录了。
这样不仅可以解决你的问题,而且每个Tab操作一致,也不会有传值的问题。
作者: lzp4881    时间: 2019-9-12 08:02
sanshi 发表于 2019-9-11 16:42
考虑一个变通的方法,页面第一次加载时直接向数据库插入一个空记录并返回ID,把这个ID保存到页面上,以后 ...

变通方法固然可以,但心中始终不爽,传个参数就那么难吗?
作者: sanshi    时间: 2019-9-12 09:41
lzp4881 发表于 2019-9-12 08:02
变通方法固然可以,但心中始终不爽,传个参数就那么难吗?

传参数很简单,比如在保存时更新页面上某个HiddenField的值,在其他Tab中读取这个值就行了。如果设置不同iframe的话,可以将这个值保存到父页面中,这就需要对JS有所了解。

即使如此,这个方法还是不如上面所说的变通方法(也可以说是另辟蹊径)来的直接和简单。
作者: lzp4881    时间: 2019-9-24 16:13
奇怪,用空项目重现又是正常的,可以正常提交数据。看了一下,空项目用的是经典模式,实际项目用的是集成模式,难道是这个原因?




欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/) Powered by Discuz! X3.4