SelectedIndexChanged事件不会在下拉列表中选择项目吗?

问题描述 投票:3回答:4

假设我有一个包含2个项目的下拉列表,默认情况下,第一个项目被选中。如果选择单击下拉列表中的第一项,是否有办法让SelectedIndexChanged()事件仍然触发?

我以为我可以通过将下拉列表的SelectedIndex设置为-1来做到这一点,但这没有用,因为它不显示当前选择的值,因此具有误导性。

我对此有一个问题,就是下拉列表用于排序。我有一个排序半工作方式,例如,如果我选择第二个项目,它将以升序排序,但是如果我现在想使用第二个项目以降序排序,则必须选择另一个项目然后再返回到第二项。

即使添加“选择依据”,我认为排序的最佳解决方案是在下拉列表中仅包含更多项,例如:

排序编号(Asc)

排序编号(Desc)

排序字母(Asc)

排序字母(Desc)

c# asp.net
4个回答
1
投票

注意:这是基于问题的更新内容。

假设您有一个下拉列表和一个列表框(dropdownlist1和listbox1)

您可以这样在page_load事件中设置您的初始下拉列表:

dropdownlist1.items.insert(0, "----Select Sort Method----")
dropdownlist1.items.insert(1, new ListItem("Alphabetic Ascending", "AlphaAsc"))
dropdownlist1.items.insert(2, new ListItem("Alphabetic Descending", "AlphaDesc"))
dropdownlist1.items.insert(3, new ListItem("Numeric Ascending", "NumAsc"))
dropdownlist1.items.insert(4, new ListItem("Numeric Descending", "NumDesc"))
dropdownlist1.selectedindex = 0

然后在您的dropdownlist1.selectedindexchanged事件上,您将像这样处理它:

if dropdownlist1.selectedindex <> 0 then
   select case dropdownlist1.selectedvalue
       case "AlphaAsc"
            Insert Code to Sort ListBox1 Alphabetically in ascending order
       case "AlphaDesc"
            Insert Code to sort ListBox1 Alphabetically in descending order
       case "NumAsc"
            Insert code to sort ListBox1 Numerically in ascending order
       case "NumDesc"
            Insert code to sort ListBox1 Numerically in descending order
   end select
end if 

注意:如果希望在选择项目后立即进行排序,则要确保将dropdownlist1的AutoPostBack属性设置为true。]


6
投票

[不幸的是,否:仅当用户将选择项从一项更改为另一项时,才会触发该事件。


2
投票

如前所述,添加文本的第一项以指导用户从列表中选择一项。


2
投票

只是出于好奇,您的第一个项目应该是可以选择的项目,还是“选择以下项目”?因为您实际上可以将下拉菜单的文本值设置为上述引号,并且该文本值不是可选项目,所以无论他们选择什么,selectedindexchanged始终会在最初启动。

© www.soinside.com 2019 - 2024. All rights reserved.