【问题标题】:jQuery confirmation dialog from gridview row always posts back来自 gridview 行的 jQuery 确认对话框总是回发
【发布时间】:2013-10-17 03:04:50
【问题描述】:

我正在尝试使用这样的图像按钮删除 gridview 中的一行

                        <asp:TemplateField>
                        <ItemTemplate>
                            <asp:ImageButton ID="imgDelete" CssClass="gridColumnDelete" runat="server" ImageUrl="~/Imgs/Delete.png" AlternateText="Delete"  
                            CommandName="Delete" CommandArgument="<%#((GridViewRow)Container).RowIndex %>"/>
                        </ItemTemplate>
                    </asp:TemplateField>

我已经编写了用于确认删除的 jQuery 对话框

$(document).ready(function () {
confirm();
    });

    function confirm() {
        $(".gridColumnDelete").click(function () {
            $("#dialog-confirm").dialog({
                resizable: false,
                height: 140,
                modal: true,
                buttons: {
                    "Yes": function () {
                        __doPostBack(); 
                        $(this).dialog("close");
                    },
                    Cancel: function () {
                        $(this).dialog("close");
                    }
                }

            });
        });
        return false;
    }

用于对话框的div标签是这个

 <div id="dialog-confirm" title="Confirm?" style="display:none">
<p><span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>Are you sure to delete the trip?</p>
</div>

问题是我是单击是还是在对话框中取消 Gridview_RowCommand 在 c# 中执行。

事实上 Gridview_RowCommand 甚至在我点击确认对话框中的任何按钮之前就已执行

【问题讨论】:

  • 我不确定__doPostBack(); 是否会像您希望的那样工作,但请尝试将return false; 放入点击处理程序中。
  • return 被移到 Yes 内并按建议取消功能,但没有运气
  • 您是否尝试过为您的ImageButton 使用属性OnClientClick?它应该在回发之前触发。

标签: c# javascript jquery asp.net gridview


【解决方案1】:
"Yes": function () {
    $(this).dialog("close");
    return true;
},
"Cancel": function () {
    $(this).dialog("close");
    return false;
}

<asp:ImageButton ID="imgDelete"  OnClientClick="return confirm();" CssClass="gridColumnDelete" runat="server" ImageUrl="~/Imgs/Delete.png" AlternateText="Delete"  
                            CommandName="Delete" CommandArgument="<%#((GridViewRow)Container).RowIndex %>"/>

【讨论】:

    【解决方案2】:

    去掉最后的return语句,如下操作

    "Yes": function () {
       // __doPostBack(); 
        $(this).dialog("close");
        return true;
    },
    "Cancel": function () {
        $(this).dialog("close");
        return false;
    }
    

    并更改您的asp:ImageButton 如下

    <asp:ImageButton ID="imgDelete"  OnClientClick="return confirm();" CssClass="gridColumnDelete" runat="server" ImageUrl="~/Imgs/Delete.png" AlternateText="Delete"  
                                CommandName="Delete" CommandArgument="<%#((GridViewRow)Container).RowIndex %>"/>
    

    【讨论】:

    • 它甚至在我点击确认对话框中的任何按钮之前回发
    • 仍然不能使用 jQuery。现在只有我注意到确认是一个javascript函数。所以现在显示默认确认消息。但不是 jQuery 函数。我将名称更改为 ConfirmDelete 并更改 OnClientClick="return confirmDelete();"但仍然无法正常工作
    【解决方案3】:

    【讨论】:

      猜你喜欢
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      相关资源
      最近更新 更多