【问题标题】:AspxClientPopupControl: CloseButtonClick and ValueChangedAspxClientPopupControl:CloseButtonClick 和 ValueChanged
【发布时间】:2012-04-27 16:36:59
【问题描述】:

我正在使用 DevExpress v10。我有一个带有 AspxPopupControl 的 ASP.NET 页面。 AspxPopupControl 包含几个文本框 AspxTextBox。

我需要以下功能:当用户单击 AspxPopupControl 弹出窗口标题中的关闭按钮时,检查自弹出窗口打开后 AspxTextBox 字段中是否发生了某些更改。如果有,确认“您真的要关闭窗口而不保存吗?”

我打算按以下方式实现它:为 AspxClientTextBox 控件处理客户端事件 ValueChanged。在这样的处理程序中,我可以设置一个标志,然后在关闭事件的客户端处理程序(AspxClientPopupControl)中分析它

但问题是:如果我更改了 AspxTextBox 中的某些内容,然后立即单击关闭按钮,则将首先触发 Closing 事件,然后在关闭后触发 ValueChanged 事件!

这不允许我做我想做的事。

这里有什么解决办法吗?

【问题讨论】:

    标签: devexpress


    【解决方案1】:

    Closing 事件接收 ASPxClientPopupWindowCancelEventArgs 作为参数,您可以使用它来取消关闭事件。

    你可以这样做:

    <dx:ASPxPopupcontrol>
        ...
        <ClientSideEvents Closing="popup_Closing" />
    </dx:ASPxPopupControl>
    
    <script type="text/javascript">
    
        function popup_Closing(s,e)
        {
            if (textbox1.GetText() == '' || ...) // or logic here
            {
                e.cancel = !confirm('You've empty fields. Continue anyway?');
            }
        }
    
    </script>
    

    【讨论】:

    • 好的,谢谢。您建议将控件的“初始”值与 popup_Closing 中的“最终”值进行比较。是的,我想过这个。但我想知道:是否可以在控件内容更改后立即设置一些“修改标志”?到目前为止,我无法解决这个问题。控件有 ValueChanged 事件,好吧。但是:假设我更改了一个 AspxTextBox,然后立即单击关闭按钮。在这种情况下,我将首先获得 Closing 事件,然后才会触发 THEN ValueChanged 事件!这是我不能接受的。
    • 您可以在KeyPress 事件上设置该标志。或者可能在弹出Closing 事件之前触发文本框LostFocus 事件。有多种选择。您甚至可以采取另一条路线并使用确定/取消按钮使弹出窗口的关闭按钮用作取消。
    猜你喜欢
    • 2021-05-30
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 2011-06-02
    相关资源
    最近更新 更多