我有一个页面,其中有几个 ListBox es,这些页面基于使用 AutoPostBack 的选定值进行了一些级联过滤。该表单采用所有选定的值,并通过跨页发布到不同的 ASPX 来生成 excel 文档。问题是,单击提交一次后,每次选择更改时,它都会不断触发跨页面回发。

<asp:ScriptManager runat="server" />
<asp:UpdatePanel UpdateMode="Conditional" runat="server">
    <ContentTemplate>
  <asp:ListBox ID="ParentItems" runat="server" SelectionMode="Multiple" AutoPostBack="true"></asp:ListBox>
  <asp:ListBox ID="ChildItems" runat="server" SelectionMode="Multiple" AutoPostBack="true"></asp:ListBox>
 </ContentTemplate>
</asp:UpdatePanel>

<asp:Button ID="Submit" runat="server" PostBackUrl="~/AnotherPageThatGeneratesAnExcelDoc.aspx" />

如何从 ListBox es 的 SelectedIndexChanged 事件中取消跨页回发?

这是代码隐藏中的事件:
Protected Sub ParentItems_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ParentItems.SelectedIndexChanged
 '' do some filtering of the ChildItems ListBox

 '' tried these but they do not work
 ''Submit.Enabled = False

 ''Submit.PostBackUrl = String.Empty

 '' I also tried wrapping the button in a PlaceHolder and hiding/removing it, neither worked
 ''Buttons.Visible = False
 ''Buttons.Controls.Remove(Submit)
End Sub

最佳答案

这是我目前使用 javascript 的解决方案。它有效,但似乎是一个黑客:

// using jQuery, add a click event that resets the form action
$("select[multiple]").click(function () {
    this.form.action = this.form._initialAction;
});

编辑:在代码隐藏中添加一个点击事件:
ParentItems.Attributes("onclick") = "this.form.action = this.form._initialAction;"

关于asp.net - 取消跨页回发?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4472591/

10-11 12:02