在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!
答案 0 :(得分:3)
第二次(当您单击按钮但未在列表中选择任何内容时),SelectedIndexChanged事件不会被引发(因为您没有更改所选索引)。
您需要确保按钮处理程序中的逻辑也可以为下拉列表的当前所选索引获取正确的操作。 p_two_action似乎正在重置 - 当你说它是全局的时候你是如何实现它的?