通过列表框中的选定项更新文本框

时间:2011-03-11 22:57:22

标签: asp.net drop-down-menu

在ASP.NET中,我有一个dropdown,其中包含一些项目,我有一个button和一个textbox。我订阅了下拉列表的SelectedIndexChanged事件,我将下拉列表的新选定索引传递给将其索引(通过enum)转换为字符串的结构。然后通过类中的属性将该字符串放入文本框中。

//Enum and struct representing index to string conversion for dropdown

Public Enum e_action
    AcOne = 0
    AcTwo
    AcThree
    AcThree
    AcFour

End Enum

Public Structure Action
    Public Sub New(ByVal index As Integer)
        Select Case index
            Case 0
                action = e_action.AcOne
            Case 1
                action = e_action.AcTwo
            Case 2
                action = e_action.AcThree
            Case 3
                action = e_action.AcFour
            Case 4
                action = e_action.AcFive
           End Select
    End Sub

//这是下拉列表的selectedIndexChanged函数

  Protected Sub dropdownAction_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles dropdownAction.SelectedIndexChanged
        Dim ddl As DropDownList = TryCast(sender, DropDownList)

        If Not IsNothing(ddl) Then
            Dim act As New Action(ddl.SelectedIndex)
            p_two_action = act  //p_two_action is a global var of type Action
        End If
    End Sub 


//inside the button handler

dim myclass as MyClass

MyTextBox.Text = myclass.getAction //returns string of action done in dropdown

现在我遇到的问题是,当你第一次点击它(按钮)时,动作会在列表框中选择当前动作时更新,但是当你再次点击按钮时没有更改列表框中的任何内容,文本框显示文本框中的第零项(似乎已重置),尽管它实际上根本没有更改。

我猜这可能与按钮点击引起的回发有关,这会重置全局或某事的状态,但我不确定。为什么在第一次设置下拉框时仍然会重置它?

有人可以帮忙吗?

如果不清楚,请对不清楚的内容发表评论。 THX!

1 个答案:

答案 0 :(得分:3)

第二次(当您单击按钮但未在列表中选择任何内容时),SelectedIndexChanged事件不会被引发(因为您没有更改所选索引)。

您需要确保按钮处理程序中的逻辑也可以为下拉列表的当前所选索引获取正确的操作。 p_two_action似乎正在重置 - 当你说它是全局的时候你是如何实现它的?