Javascript GridView上的Class属性不';点击按钮后无法工作
我有一个GridView,您可以在其中编辑行上的信息。因此,您可以单击该行,然后弹出一个可以更改内容的框,然后单击“保存”。 但当我点击保存按钮并尝试点击另一行后,弹出框不再显示。我必须完全关闭表单,然后返回并单击一行。如果我不点击“保存”按钮,它可以正常工作。我单击一行,关闭弹出框,然后单击另一行。问题仅在单击“保存”按钮后出现 GridView: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
<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 */
});