我有一个 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 GVAddresses_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
GridView gv = sender as GridView;
DataRowView drv = e.Row.DataItem as DataRowView;
//e.Row.Cells[0].Attributes.Add("onclick", "event.stopPropagation();");
if (drv != null)
{
e.Row.Attributes.Add("class", "GVAddressesRow");
e.Row.Attributes.Add("ID", "GVAddressesRow_" + drv["ID"].ToString());
e.Row.ToolTip = "Click here to Edit Address";
}
}
}
按钮:
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 仍然发生变化,并且之前使用 $(".GVAddressesRow").click
进行的绑定(bind)丢失了。这就是为什么您必须在 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>
关于javascript - 单击按钮后 GridView 上的类属性不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46003867/