如何在单击按钮时转到下拉列表中的下一个项目


下面是我的代码。这选择了第一个但是1,并且它不会再次进行
Dim idx As Integer = Me.Dpdtokens.SelectedIndex
If idx <> Me.Dpdtokens.SelectedIndex - 1 Then

Me.Dpdtokens.SelectedIndex = idx + 1
Else
Me.Dpdtokens.SelectedIndex = 0
End If

这对我有效:

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If cboHotel.SelectedIndex >= 0 Then
' user has selected item, increase by 1
If cboHotel.SelectedIndex < cboHotel.Items.Count - 1 Then
cboHotel.SelectedIndex += 1
End If
Else
' no selection at all - lets start at 0
cboHotel.SelectedIndex = 0
End If
End Sub

所以,若用户并没有选择任何内容(并且您允许这样做,那个么选择的索引是-1。但是,默认情况下,它将从第一个被选中的项目开始。

也不清楚您的逻辑是什么/为什么抓取所选的索引,然后在下一个链接上检查它们是否不同?(他们不可能(。

编辑:==========================

此外,还没有显示下拉框/组合框是如何加载值的。

例如,我在页面加载上有这样的内容:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
LoadCombo()
End If
End Sub
Sub LoadCombo()
Dim rstHotels As DataTable = New DataTable
Using conn As New SqlConnection(My.Settings.TEST4)
Dim strSQL As String =
"SELECT ID, HotelName, City, Province FROM tblHotels ORDER BY HotelName"
Using cmdSQL As New SqlCommand(strSQL, conn)
conn.Open()
rstHotels.Load(cmdSQL.ExecuteReader)
End Using
End Using
cboHotel.DataSource = rstHotels
cboHotel.DataBind()
End Sub

请注意,我非常小心地检查是回发的。因此,不要一次又一次地重新加载组合框。如果每次在页面加载时重新加载并绑定组合框,则所选索引等将丢失。

上述建议适用于gridview、listbox等。换句话说,当我们有页面加载事件时,我们只想在FIRST页面加载时加载控件。由于所有其他按钮和事件也会为每个帖子反复触发页面加载,因此如果我们更改组合框的索引,但每次都重新加载,则索引位置将丢失。

因此,一般来说,像组合框、网格视图等控件的加载应该只发生一次,并且是第一次加载页面。这个目标是通过在页面加载事件中检查并使用If Not IsPostBack代码存根来实现的。

最新更新