AutoPostBack = True导致表单不止一次触发Page_Load事件

时间:2012-06-11 04:17:10

标签: asp.net

我有一个带有SelectedIndexChanged事件监听器的DropDownList

<asp:DropDownList ID="LoanOptionCombo" runat="server" AutoProstBack="True">

监听

Protected Sub LoanOptionCombo_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles LoanOptionCombo.SelectedIndexChanged
    ' hello world, no code here yet
End Sub

我的Page_Load事件

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    ' parse a .txt file and populate the DropDownList
    InitializeLoanOptions()
End Sub

最初加载表单时,贷款选项会加载到DropDownList(当前为4)。

每当用户为DropDownList选择一个贷款选项时,DrowDownList会以某种方式重新初始化,再次向列表添加相同的4个选项。

每次用户选择其他选项时,相同的4个选项都会重新添加到列表中。

我假设再次调用Page_Load事件,因为这是我实际添加DropDownList项的唯一地方。代码中没有其他地方与DrowDownList.Items交互。

如何在DropDownList上侦听SelectedIndexChanged事件,但避免重新初始化整个表单?

3 个答案:

答案 0 :(得分:1)

您可以在页面加载事件中使用IsPostBack属性。 当您的页面加载时,只有数据绑定到您的下拉列表。

检查这些链接

http://msdn.microsoft.com/en-us/library/system.web.ui.page.ispostback.aspx

http://www.aspnet101.com/2007/03/if-not-page-ispostback/

答案 1 :(得分:1)

您需要更改Page_Load,如下所示

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    ' parse a .txt file and populate the DropDownList
 If Not IsPostBack
    InitializeLoanOptions()
  End If
End Sub

答案 2 :(得分:0)

检查page_load上的IsPostBack属性。

If Not IsPostBack
  // Load your drop drop list here....
End If