【问题标题】:How do I go to the next item in Drop Downlist on Button Click如何在按钮单击时转到下拉列表中的下一个项目
【发布时间】:2021-12-18 01:35:08
【问题描述】:

下面是我的代码。这选择了第一个但 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

【问题讨论】:

    标签: asp.net vb.net


    【解决方案1】:

    这对我有用:

    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等。换句话说,当我们有一个页面加载事件时,我们只想在第一个页面加载时加载控件。由于所有其他按钮和事件也将在每次回发时反复触发页面加载,因此如果我们更改组合框的索引,但每次都重新加载,那么索引位置将丢失。

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

    【讨论】:

    • 谢谢,但我面临同样的问题。但我的 html 代码在更新面板中,我不知道这是否会对其产生影响
    • 没关系。但是您可以将按钮放在更新面板中。但是,如果按钮在更新面板之外,它无论如何都会发回一整页,所以它应该不再重要。但是,如果按钮单击是在不同的更新面板中,那么组合框 - 这将不起作用。
    • 我的整个页面都在更新面板中,这意味着我的所有元素都在更新面板中。我也尝试将按钮设置为回发 triga 但仍然
    • 更新面板不是问题。如果不是 IsPostBack,则必须始终在第一页加载时检查“加载网格、组合框等的代码”。去这里。如果您违反此规则(即在第一页加载时加载控件、网格、组合框等),您实际上无法构建任何类型的工作网页 - 因此加载控件代码必须放在该页面加载中If Not IsPostBack then code stub.这是所有网页设计所必需的——即使在使用更新面板时也是如此。所以“不工作”需要更多信息,但听起来组合每次都会重新加载,不仅是 ispostback = false stub。
    • 非常感谢您在 form_Load 上加载数据的时间,但事实上,如果不是 IsPostBack,我就没有添加。现在它工作得很好,再次感谢那些
    猜你喜欢
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    相关资源
    最近更新 更多