我正在使用VS 2010,.net 4,vb.net。我有一个asp.net网站,页面上有2个下拉列表。
<asp:DropDownList ID="ddlClassIndex" runat="server" AutoPostBack="true" />
<asp:DropDownList ID="ddlClassQBankList" runat="server" AutoPostBack="true" />
当页面首次加载时,我可以单击其中任何一个,选择一个项目并正确触发事件。当我选择任一下拉框作为第二个操作时,第一个下拉列表ddlClassIndex.SelectedIndexChanged
将触发。我做错了会发生这种情况。我在页面加载时进行page.ispostback=false
检查,我们也在使用母版页。
有什么想法吗?
确定..
Private Sub LoadClass()
Dim Os As List(Of Dempsey.OldeTestClassIndex) = Nothing
Dim Oc As New Dempsey.OldeTestClassIndex_Controller
Os = Oc._GetClassIndexData(0)
Dim X = From w In Os
Where w.Active = 3
Select w
Os = X.ToList
With Me.ddlClassIndex
.DataSource = Os.OrderBy(Function(o) o.ClassTitle)
.DataTextField = "ClassTitle"
.DataValueField = "tblClassIndexID"
.DataBind()
.Items.Insert(0, New ListItem("Choose Class Title", "0"))
.SelectedIndex = 0
End With
End Sub
Protected Sub ddlClassIndex_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlClassIndex.SelectedIndexChanged
If Me.ddlClassIndex.SelectedIndex > 0 Then
If ClassHasCategories(Me.ddlClassIndex) = True Then
Response.Redirect("AddEditQBank.aspx?ClassIndexID=" & Me.ddlClassIndex.SelectedItem.Value)
Else
Me.lblStatus.Text = "No Categories"
Me.lblStatus.Visible = True
End If
End If
End Sub
Private Sub LoadClassQBankList()
Dim ary As New ArrayList
ary.Add(1)
ary.Add(2)
ary.Add(3)
Dim Os As List(Of Dempsey.OldeTestClassIndex) = Nothing
Dim Oc As New Dempsey.OldeTestClassIndex_Controller
Os = Oc._GetClassIndexData(0)
Dim X = From w In Os Join l In ary On w.Active Equals l
Where w.KT = 1 And w.RandomTest = 1
Select w
Os = X.ToList
With Me.ddlClassQBankList
.DataSource = Os.OrderBy(Function(o) o.ClassTitle)
.DataTextField = "ClassTitle"
.DataValueField = "tblClassIndexID"
.DataBind()
.Items.Insert(0, New ListItem("Choose Class Title", "0"))
.SelectedIndex = 0
End With
End Sub
Protected Sub ddlClassQBankList_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlClassQBankList.SelectedIndexChanged
If Me.ddlClassQBankList.SelectedIndex > 0 Then
Response.Redirect("ClassQBankList.aspx" & "?ClassIndexID=" & Me.ddlClassQBankList.SelectedValue)
End If
End Sub
~~~~~~~~~~ 更多信息 我正在检查页面回发。当我从下拉列表中选择时,它会重定向到不同的页面。当我单击后退按钮并在另一个下拉列表中选择另一个值时,两个SelectedIndexChanged都会触发。所以我需要用viewstate做点什么吗?在我重新加入另一页之前?
答案 0 :(得分:0)
超级老了,但是对于可怜的灵魂仍然看到这种黯淡的回答,你可能会在Rick Strahl的(同样陈旧的)帖子中找到一些解脱:West Wind: ASP.NET ListBoxes, SelectedValue and ViewState。
剧透警报:它有点hacky并涉及做一些你自己的视图状态管理。