单击gridview内的链接按钮时无法触发jquery警报

时间:2012-03-12 12:22:47

标签: jquery asp.net gridview

我在用户尝试删除记录表单Gridview时写了一个确认,如下所示

<head runat="server">
<title></title>
<style type="text/css">
    BODY, HTML
    {
        padding: 0px;
        margin: 0px;
    }
    BODY
    {
        font-family: Arial, Helvetica, sans-serif;
        font-size: 12px;
        background: #FFF;
        padding: 15px;
    }

    H1
    {
        font-size: 20px;
        font-weight: normal;
    }

    H2
    {
        font-size: 16px;
        font-weight: normal;
    }

    FIELDSET
    {
        border: solid 1px #CCC;
        -moz-border-radius: 16px;
        -webkit-border-radius: 16px;
        border-radius: 16px;
        padding: 1em 2em;
        margin: 1em 0em;
    }

    LEGEND
    {
        color: #666;
        font-size: 16px;
        padding: 0em .5em;
    }

    PRE
    {
        font-family: "Courier New" , monospace;
        font-size: 11px;
        color: #666;
        background: #F8F8F8;
        padding: 1em;
        -moz-border-radius: 8px;
        -webkit-border-radius: 8px;
        border-radius: 8px;
    }

    /* Custom dialog styles */
    #popup_container.style_1
    {
        font-family: Georgia, serif;
        color: #A4C6E2;
        background: #005294;
        border-color: #113F66;
    }

    #popup_container.style_1 #popup_title
    {
        color: #FFF;
        font-weight: normal;
        text-align: left;
        background: #76A5CC;
        border: solid 1px #005294;
        padding-left: 1em;
    }

    #popup_container.style_1 #popup_content
    {
        background: none;
    }

    #popup_container.style_1 #popup_message
    {
        padding-left: 0em;
    }

    #popup_container.style_1 INPUT[type='button']
    {
        border: outset 2px #76A5CC;
        color: #A4C6E2;
        background: #3778AE;
    }
</style>
<script src="jquery.js" type="text/javascript"></script>
<script src="jquery.ui.draggable.js" type="text/javascript"></script>
<!-- Core files -->
<script src="jquery.alerts.js" type="text/javascript"></script>
<link href="jquery.alerts.css" rel="stylesheet" type="text/css" media="screen" />
<script type="text/javascript">
    $(document).ready(function () {
        var id = $("<%# GridView1.ClientID %> tr").find('#btnDelete.ClientID');
        $("#btn").click(function () {
            jConfirm('Are you sure you want to delete?', 'Confirmation Dialog', function (r) {
                if (r == true) {
                    __doPostBack(id, "");
                }
                else
                    return false;
            });
        });
    });
  </script>
  </head>

我的GridView如下

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4"
        ForeColor="#333333" OnRowEditing="GridView1_RowEditing" OnRowCancelingEdit="GridView1_RowCancelingEdit"
        OnRowUpdating="GridView1_RowUpdating" OnRowDeleting="GridView1_RowDeleting" Width="574px">
        <RowStyle BackColor="#EFF3FB" />
        <Columns>
            <asp:TemplateField HeaderText="ID">
                <ItemTemplate>
                    <asp:Label ID="Id" runat="server" Text='<%#Eval("ID") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:Label ID="eid" runat="server" Text='<%#Eval("ID") %>'></asp:Label>
                </EditItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Name">
                <ItemTemplate>
                    <asp:Label ID="Name" runat="server" Text='<%#Eval("Name") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="ename" runat="server" Text='<%#Eval("Name") %>'></asp:TextBox>
                </EditItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Address">
                <ItemTemplate>
                    <asp:Label ID="Address" runat="server" Text='<%#Eval("Address") %>'></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:TextBox ID="eprice" runat="server" Text='<%#Eval("Address") %>'></asp:TextBox>
                </EditItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="">
  <ItemTemplate>
                    <asp:LinkButton ID="edit" runat="server" Text="Edit" CommandName="edit"></asp:LinkButton>
                    <input id="btn" type="button" value="Delete" class="submit_12" />
                    <asp:LinkButton ID="btnDelete" runat="server" Visible="false" Text="Delete" CommandName="Delete" />
                </ItemTemplate>                    <EditItemTemplate>
                    <asp:LinkButton ID="update" runat="server" Text="Update" CommandName="update"></asp:LinkButton>
                    <asp:LinkButton ID="cancel" runat="server" Text="Cancel" CommandName="cancel"></asp:LinkButton>
                </EditItemTemplate>
            </asp:TemplateField>
        </Columns>
        <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
        <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
        <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
        <EditRowStyle BackColor="#2461BF" />
        <AlternatingRowStyle BackColor="White" />
    </asp:GridView>

但我无法得到任何人告诉我哪里出错的必要警告

enter image description here

我正在使用此网站的提醒

http://labs.abeautifulsite.net/archived/jquery-alerts/demo/

添加了所有必需的脚本,但仍然存在同样的问题

添加了脚本

enter image description here

3 个答案:

答案 0 :(得分:4)

您可能没有在页面中注册JQuery。

看看: http://docs.jquery.com/How_jQuery_Works#jQuery:_The_Basics

了解如何在页面上包含JQquery。

答案 1 :(得分:4)

如果上面的代码是你在页面上的所有内容,那么你就缺少对jQuery库的引用。

jquery.alert.js只是主jQuery库的插件,所以你需要先引用它,然后引用警告插件。

<script src="[path-to-jquery-library]" type="text/javascript"></script>
<script src="jquery.alerts.js" type="text/javascript"></script>
<link href="jquery.alerts.css" rel="stylesheet" type="text/css" media="screen" />

另外,请仔细检查jquery库所需的最低版本是什么,以便使用此插件。

修改 更新代码后,我可以看到您的javascript引用顺序错误。请看我上面的订单。

答案 2 :(得分:1)

我假设您正在尝试将Click事件分配给所有删除按钮?但是你的jQuery选择器表明你正在寻找ID为“btnDelete”的单个元素。在任何情况下,GridView按钮都会有更长的ID,因为.NET将根据控件层次结构分配ID。这可能更像是:

GridView1 $ $ ROW1 btnDelete

GridView1 $ $ ROW2 btnDelete

您可以查看页面来源以获取确切的名称,但您的选择器是错误的(即使您只选择了一个按钮)。在你的btnDelete中添加一个独特的CssClass:

<asp:LinkButton ID="btnDelete" runat="server" Visible="false" Text="Delete" CommandName="Delete" CssClass="promptDelete" />

(请注意,此.css文件中不必存在此CssClass) 然后将选择器更改为:

$(".promptDelete").click(function () {
    jConfirm('Are you sure you want to delete?', 'Confirmation Dialog', function (r) {
        if (r == true) {
            __doPostBack(id, "");
        }
        else
            return false;
    });
});