【问题标题】:OnClientClick and AJAX in RadControls for ASP.NET (telerik) not workingRadControls for ASP.NET (telerik) 中的 OnClientClick 和 AJAX 不起作用
【发布时间】:2012-04-02 12:05:05
【问题描述】:

我有以下代码:

<telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" LoadingPanelID="rlpMain">
    <asp:ImageButton ID="ImageButton1" runat="server" 
        OnClientClick="return confirm('Are you sure?');" />
</telerik:RadAjaxPanel>

此代码不会触发我在 .vb 文件中编写的事件背后的代码。

请帮帮我....

【问题讨论】:

    标签: asp.net vb.net telerik


    【解决方案1】:

    可能需要向用户提供一个确认对话框,并在接受时发起 AJAX 请求。使用标准回传的确认通常如下所示:

    <asp:ImageButton ID="ImageButton1" runat="server" 
        OnClientClick="return confirm('Are you sure?');" />
    

    应该对 OnClientClick 进行一些更改以使用 AJAX:

    <asp:ImageButton ID="ImageButton2" runat="server" 
        OnClientClick="if (!confirm('Are you sure?')) return false;" />
    

    当通过向 RadAjaxManager 添加必要的 AJAX 设置来对按钮进行 ajaxified 时,或者当按钮放置在 RadAjaxPanel 控件中时。

    或者,可以使用 OnRequestStart 客户端事件来实现更复杂的逻辑。这是一个示例脚本:

    <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
        <script type="text/javascript">
            function OnRequestStart(ajaxControl, eventArgs) {
                var eventTarget = eventArgs.get_eventTarget(); 
                if (eventTarget == "<%= ImageButton1.UniqueID %>") {
                    return confirm('Are you sure?');
                }
                else {
                    return false;
                }
            }
        </script>
    </telerik:RadCodeBlock>
    

    【讨论】:

    • 花了很多时间寻找解决方案后,这行得通!很好的答案:)
    【解决方案2】:

    如果您想坚持使用 RadControl,您可以使用 RadButton 作为此处定义的 ImageButton:

    http://www.telerik.com/help/aspnet-ajax/button-image-buttons.html

    创建一个按钮,其 OnClientClicking 属性设置为调用以下确认(或 radconfirm 用于坚持 Telerik)的函数:

    function ConfirmDeletion(sender, args) {
        var ContinuePostBack = Function.createDelegate(sender, function (clickedOK) {
            if (clickedOK) {
                this.click();
            }
        });
        var text = "Are you sure you wish to delete this attribute?";
        radconfirm(text, ContinuePostBack, 300, 100, null, "Deletion");
        args.set_cancel(true);
    }
    

    这将取消回发,但如果用户单击确定,则通过委托 ContinuePostBack 单击按钮。我经常使用这段代码来提示删除。

    【讨论】:

      猜你喜欢
      • 2012-10-23
      • 1970-01-01
      • 2010-11-27
      • 2016-05-18
      • 2021-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多