0

使用 Telerik RadWindowManager 的 Web 应用程序。我想通过在用户可以选择是、否和取消的地方抛出一条消息来阻止用户直接单击关闭按钮。

如果他点击是,意味着他可以转到上一页将一些信息保存到数据库,如果否,他可以不保存而转到上一页并取消以保持在同一页面。请分享您对此的看法。

我尝试在此处添加 OnClientBeforeClose="OnClientBeforeClose" 并定义方法 OnClientBeforeClose。但它不起作用

<telerik:RadWindowManager ID="Singleton" runat="server"  Behaviors="Close, Move, Resize, Maximize">
        <Windows>
             <telerik:RadWindow ID="DialogMsg" 
                ReloadOnShow="true" OnClientClose="OnClientMsgclose"
                BackColor="Gray" Modal="true" runat="server" 
                NavigateUrl="../messages.aspx">
            </telerik:RadWindow>
        </Windows>
          <Windows>
        <telerik:RadWindow ID="DialogAlertMsg" ShowContentDuringLoad="false"  OnClientClose="OnCloseOfAlertDialog"  EnableViewState="false" ReloadOnShow="true"
            BackColor="Gray" Modal="true" runat="server" Height="250" Width="350">
        </telerik:RadWindow>
    </Windows>          
</telerik:RadWindowManager>
4

2 回答 2

0

尝试以下代码来实现您的方案。

ASPX:

  <telerik:RadWindowManager ID="winmgr" runat="server">
            <Windows>
                <telerik:RadWindow ID="win1" runat="server" VisibleOnPageLoad="true" OnClientClose="OnClientClose">
                </telerik:RadWindow>
            </Windows>
        </telerik:RadWindowManager>
        <telerik:RadWindow ID="confirmWindow" runat="server" VisibleTitlebar="true" VisibleStatusbar="false"
            Modal="true" Behaviors="None" Height="200px" Width="300px" Title="Confirm Delete">
            <ContentTemplate>
                <div style="padding-left: 30px; padding-top: 20px; width: 200px; float: left;">
                    <asp:Label ID="lblConfirm" Font-Size="14px" Text="Are you sure ?" runat="server"></asp:Label>
                    <br />
                    <br />
                    <telerik:RadButton ID="RadButtonYes" runat="server" Text="Yes" AutoPostBack="false"
                        OnClientClicked="confirmResult">
                    </telerik:RadButton>
                    <telerik:RadButton ID="RadButtonNo" runat="server" Text="No" AutoPostBack="false"
                        OnClientClicked="confirmResult">
                    </telerik:RadButton>
                    <telerik:RadButton ID="RadButtonCancel" runat="server" Text="Cancel" AutoPostBack="false"
                        OnClientClicked="confirmResult">
                    </telerik:RadButton>
                </div>
            </ContentTemplate>
        </telerik:RadWindow>
        <asp:HiddenField ID="hdn" runat="server" />

JS:

function OnClientClose(sender, args) {
        $find("<%=confirmWindow.ClientID %>").show();
        $find("<%=RadButtonYes.ClientID %>").focus();

    }
    function confirmResult(sender, args) {
        var oWnd = $find("<%=confirmWindow.ClientID %>");
        oWnd.close();
        if (sender.get_text() == "Yes" || sender.get_text() == "No") {

            document.getElementById("<%=hdn.ClientID %>").value = sender.get_text();
            $find("<%=RadButton1.ClientID %>").click();
        }
    }

C#:

 protected void RadButton1_Click(object sender, EventArgs e)
    {
        string value = hdn.Value;
        if(value=="Yes")
        {
          //your code
        }
        else if(value=="No")
        {
           //your code   
        }
    }
于 2013-10-30T08:40:03.250 回答
0

这将向您展示如何仅使用 JavaScript 确认关闭:http ://www.telerik.com/help/aspnet-ajax/window-application-confirm-closing.html 您可以向回调函数添加其他代码以满足您的需求.

如果你想要三个按钮——上面关于自定义 RadWINdow 的 ContentTemplate 的想法是可行的方法,但是你可以在 JavaScript 中做更多的事情,并不是每个按钮都需要回发。

于 2013-10-31T22:55:08.403 回答