首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >ColdFusion.Window.create不刷新弹出窗口

ColdFusion.Window.create不刷新弹出窗口
EN

Stack Overflow用户
提问于 2015-03-27 04:35:40
回答 2查看 550关注 0票数 1

我正在打开一个窗口,通过Coldfusion.Window.Create编辑项目。当我单击不同的“编辑”链接时,窗口总是显示我编辑的第一项,而不是我单击的项目。由于某些原因,弹出窗口没有在每次调用中得到刷新。

以下是我的cfm代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<cfoutput query="getSavedSelections">
<table class="mytableb" >
    <tr>
        <td class="mylistb" style="width:178px;" valign="top">
            #getSavedSelections.SavedSelectionExportName#
        </td>
        <td class="mylistb" style="width:130px;" valign="top">
            (<a onclick="EditSurveyExport(#getSavedSelections.SavedSelectionExportId#,'#scope#')" style="cursor: pointer;cursor:hand;">Edit</a> |  <a onclick="ConfirmExportDeletion('#scope#',#pgmid#,#getSavedSelections.SavedSelectionExportId#,'#surveyAliasname#','#getSavedSelections.SavedSelectionExportName#','csv');" style="cursor: pointer;cursor:hand;">Delete</a>)                            
        </td>
    </tr>
</table>
</cfoutput>

下面是打开和关闭窗口的javascript代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function EditSurveyExport(SavedSelectionID,passedScope)
{
    console.log(SavedSelectionID);
    ColdFusion.Window.create("SavedSelectionEditingWindow","Edit Saved selection","index.cfm?event=survey.editexportwithid&SavedSelectionID="+SavedSelectionID+"&passedscope="+passedScope,{modal:true,width:500,height:700,center:true,draggable:true})
    console.log('after create');
    document.getElementById(ColdFusion.Window.getWindowObject("SavedSelectionEditingWindow").header.id).className = "windowHdr";

}

function CloseExportEditingWindow()
{
    ColdFusion.Window.hide('SavedSelectionEditingWindow');
    console.log('after closing');
}

我观察了控制台。只有第一次在页面加载之后,这个url才会被调用:"rc=0“。

然后,我只能在控制台中看到id和“创建后”。

我无法理解这背后的原因。有人能帮我理解一下为什么会这样吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-27 08:31:20

首先,我要重申斯科特和米格尔所说的话。如果你不需要的话,不要用它。尽管如此,为了回答您的问题,您需要在重新创建窗口之前销毁该窗口,以便获得cfwindow代码来重新加载内容。这是我以前做过的一个函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var windowCleanup = function(id) {
    try {
        //Destroy the window if it still exists
        ColdFusion.Window.destroy(id, true);
    } catch(e) { }
}

这将完全摧毁前一个窗口,然后创建您的新窗口。然后,每当您创建一个新窗口时,在create()语句之后运行以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ColdFusion.Window.onHide(id, windowCleanup);

现在,每当该窗口被隐藏时,无论出于什么原因,它都将被正确销毁,您将为新的create()方法调用做好准备。

票数 2
EN

Stack Overflow用户

发布于 2015-03-27 05:55:32

我同意Scott的意见,您应该尝试使用更新的JavaScript库,而不是依赖ColdFusion来帮助您。你最终会遇到这些限制。

话虽如此,我认为问题在于,你打开的每一个窗口都必须有一个独特的名字。否则,代码只会打开现有的窗口。

医生们有关的name参数:

窗口的名字。此属性是与窗口交互所必需的,包括动态显示或隐藏它。如果存在具有指定名称的窗口,则函数将显示该窗口,并忽略其余参数;否则,该名称在页上必须是唯一的。

在您的代码中创建的所有窗口都将具有相同的名称:"SavedSelectionEditingWindow“。您需要为希望打开的每个不同窗口创建唯一的名称。您可能只需将SavedSelectionID参数附加到名称(假设每个项都是唯一的)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29300820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文