当提交另一个弹出表单并在 OnClientClicking 时关闭时隐藏弹出窗口内的 Radbutton

Hide a Radbutton which is inside a popup when another popup form is submitted and closed upon OnClientClicking

我有一个页面“Main2.aspx”,在此页面内,我有一个按钮“交易”,单击此按钮会打开一个弹出窗体“交易”,在此弹出窗口中,我编写了一个按钮“ AddRadbutton”,并在使用 Javascript URL 重定向时单击此“AddRadbutton”,将出现一个新的弹出窗口“SaveDetails”表单。

此“SaveDetails”表单有一个“SaveRadButton”,单击此“SaveRadButton”后我的表单详细信息将被保存并且弹出窗口成功关闭。

我在这里面临的问题是,即使在使用“SaveDetails”表单上的“SaveRadButton”填写并提交详细信息后,“Transactions”表单上的“AddRadbutton”仍然可见。

早些时候,当我在用户控制页面中使用相同的“SaveDetails”弹出页面时,我可以通过在服务器端编码实现相同的场景,该弹出页面位于“Main1.aspx”内,但不在此处在 Main2.aspx.

在Main2.aspx 页面中,我只能在页面刷新时实现这一点。但我需要在“SaveDetails”弹出表单中提交表单后立即隐藏此“AddRadbutton”。

到目前为止我尝试过的技术:

下面是 AddRadButton 的代码(在交易弹出窗口中)

<div id="AddDetailsDiv" runat="server" visible="true" style="width: auto; height: auto; float: left; margin-right: 10px;">
<telerik:RadButton ID="AddRadButton" runat="server" Text="Add Details" 
CausesValidation="False" TabIndex="14" OnClientClicking="showDetailsWindow" UseSubmitBehavior="false" > 
</telerik:RadButton>
</div> 

下面是 SaveRadButton 的代码(在 SaveDetails 弹出窗口中)

<telerik:RadButton ID="SaveRadButton" runat="server" Text="Save" OnClick="InsertRadButton" 

在 OnClick 的服务器端是否有机会使用以下行处理此问题:

 ScriptManager.RegisterStartupScript(Page, Page.GetType(), "RadWindow", "CloseBind();", true);

我尝试编写另一个 Javascript 函数并在 OnClientClickingOnClientClicked 中使用它并调用这两个函数但无法实现它,因为 Telerik UI 不是支持,否则我可能会遗漏其他东西。

我已经在服务器端尝试了这个基本的 AddRadButton.Visible = false,它可以工作,但只有在页面刷新之后,但我需要在提交弹出表单后立即隐藏它。

我试过在下面的代码中处理()但无法实现。

 function CloseBind() {

 var oWindow = GetRadWindow();
 oWindow.close();
 oWindow.BrowserWindow.loadDetails();

 }
 function GetRadWindow() {
 var oWindow = null;
 if (window.radWindow) oWindow = window.radWindow;
 else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow;
 return oWindow;
 }

我搜索并尝试了许多与 Whosebug 相关的问题、场景以及许多社区开发人员网站,但这些对我也没有帮助。

如有任何想法或建议,我们将不胜感激。

AddRadButton.Visible = false

应该可以。您需要确保它位于检查 IsPostbackif 中。如果这对您不起作用,那么 WebForms lifecycle overrides it, maybe a render-related event is where this should be implemented, like OnPreRender. You could also register a callback script (see How can I do a call back to the code behind method using javascript (properly)?) 中的稍后事件可能会调用 Javascript 函数,将 display 样式更改为 none.

我试图通过在 window 关闭之前引入一个 alert() 来解决这个问题,这样页面刷新就会在用户端单击“确定”警报按钮时发生。

我试过使用 OnClientClose="saveDetailsWindowClose"

在 telerik: RadWindow 中调用警报功能
<telerik:RadWindowManager EnableShadow="true" Behaviors="Maximize, Close" ID="MainRadWindowManager"
            DestroyOnClose="false" Opacity="100" runat="server" Modal="true" AutoSize="false"
            
            CssClass="lte_colpopup" KeepInScreenBounds="true" RestrictionZoneID="MainContent"
            VisibleStatusbar="false" style="overflow: hidden !important">
            <Windows>
            <telerik:RadWindow ID="MyRadWindow" ReloadOnShow="true" ShowContentDuringLoad="false" OnClientClose="saveDetailsWindowClose"
                                Width="950" Height="450" runat="server" Title="Person Details">
            </telerik:RadWindow>
            </Windows>

</telerik:RadWindowManager>
 
<telerik:RadScriptBlock ID="MasterScriptBlock" runat="server">
        

我使用下面简单的 Javascript 函数来提醒用户:

<script type="text/javascript">
        function saveDetailsWindowClose(sender, args) {
                 alert('A Screen refresh is mandatory to load the details, so please click "OK" button to proceed');
                 window.location.reload();
        }
</script>

</telerik:RadScriptBlock>

这就是我解决问题的方法,幸运的是,Main1.aspx 和 Main2.aspx 以及弹出页面上的 AddRadbutton 都按预期工作。幸运的是,它没有妨碍 Main1.aspx 上使用相同 saveDetails.aspx 页面的用户控制页面中 window 的关闭。