Javascript GridView上的Class属性不';点击按钮后无法工作

Javascript GridView上的Class属性不';点击按钮后无法工作,javascript,c#,jquery,asp.net,gridview,Javascript,C#,Jquery,Asp.net,Gridview,我有一个GridView,您可以在其中编辑行上的信息。因此,您可以单击该行,然后弹出一个可以更改内容的框,然后单击“保存”。 但当我点击保存按钮并尝试点击另一行后,弹出框不再显示。我必须完全关闭表单,然后返回并单击一行。如果我不点击“保存”按钮,它可以正常工作。我单击一行,关闭弹出框,然后单击另一行。问题仅在单击“保存”按钮后出现 GridView: <asp:UpdatePanel ID="updOBSAddress" UpdateMode="Conditional" runat="se

我有一个GridView,您可以在其中编辑行上的信息。因此,您可以单击该行,然后弹出一个可以更改内容的框,然后单击“保存”。 但当我点击保存按钮并尝试点击另一行后,弹出框不再显示。我必须完全关闭表单,然后返回并单击一行。如果我不点击“保存”按钮,它可以正常工作。我单击一行,关闭弹出框,然后单击另一行。问题仅在单击“保存”按钮后出现

GridView:

<asp:UpdatePanel ID="updOBSAddress" UpdateMode="Conditional" runat="server" >
                               <ContentTemplate>
                                <asp:GridView runat="server" GridLines="None" ID="GVAddresses"  OnRowDataBound="GVAddresses_RowDataBound"  AutoGenerateColumns="false" CssClass="tblStatus" AllowSorting="false" >                    
                                    <Columns>
                                        <asp:TemplateField HeaderText="Code">
                                            <ItemTemplate><%# Eval("AccountCode") %></ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField HeaderText="Name">
                                            <ItemTemplate><%# Eval("Name") %></ItemTemplate>
                                        </asp:TemplateField>
                                    </Columns>
                                </asp:GridView>
                            </ContentTemplate>
                    <Triggers>
                        <asp:AsyncPostBackTrigger ControlID="btnUpdateOBSAddress" />
                    </Triggers>
                </asp:UpdatePanel> 
按钮:

protected void btnUpdateOBSAddress_Click(object sender, EventArgs e)
    {

    }
在javascript中,当单击该类时,应该会显示弹出窗口,但在我单击按钮后,不会再调用该类:

 $(".GVAddressesRow").click(function (e) {  
            ShowAddOBSAddress(this, e.pageX, e.pageY, "Edit");
            EditOBSAddress($(this).attr("ID")); 
        });

问题在于
UpdatePanel
。它使用Ajax刷新GridView,尽管用户看不到回发,但DOM仍在更改,并且以前使用
$(“.gvAddresssRow”)进行的绑定将丢失。单击
。这就是为什么在UpdatePanel刷新后必须再次执行它的原因

您可以使用
PageRequestManager
进行此操作

<script type="text/javascript">
    $(document).ready(function () {
        bindPopup();
    });

    var prm = Sys.WebForms.PageRequestManager.getInstance();

    prm.add_endRequest(function () {
        bindPopup();
    });

    function bindPopup() {
        $(".GVAddressesRow").click(function (e) {
            ShowAddOBSAddress(this, e.pageX, e.pageY, "Edit");
            EditOBSAddress($(this).attr("ID"));
        });
    }
</script>

$(文档).ready(函数(){
bindPopup();
});
var prm=Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(函数(){
bindPopup();
});
函数bindpoop(){
$(“.GVAddressesRow”)。单击(函数(e){
ShowAddOBSAddress(此,e.pageX,e.pageY,“编辑”);
EditobAddress($(this.attr(“ID”));
});
}

它第一次起作用是因为您向gridview的所有行添加了一个单击处理程序,如下所示:
$(“.GVAddressesRow”)。单击。但是,当您单击save按钮时,会从服务器返回新的html(行)。您没有向这些新行添加处理程序,因此它们将无法工作

要解决此问题,您可以在
上使用jquery
,而不是单击
上的Jquery
将用于动态创建的html元素。有关更多信息,请参阅

// Bind to all items with class GVAddressesRow inside
// #whatever element, even new ones created later.
$('#whatever').on('click', '.GVAddressesRow', function() {
     /* your code here */
});

您在“保存”按钮单击中执行什么操作?
// Bind to all items with class GVAddressesRow inside
// #whatever element, even new ones created later.
$('#whatever').on('click', '.GVAddressesRow', function() {
     /* your code here */
});