【发布时间】:2012-07-10 12:19:17
【问题描述】:
我以前觉得我的 c# 编程还不错,但今天我在认真地质疑我的脑袋,这么小的东西正在打败我……
我正在尝试让 DropDownList 正常运行,但我们今天没有继续。我在 ascx 控件中有一个简单的 DropDownList,它被动态加载到 aspx 页面中
<asp:DropDownList ID="ddl_SortBy" runat="server" AutoPostBack="true">
<asp:ListItem Value="0">Sort Alphabetically A to Z</asp:ListItem>
<asp:ListItem Value="1">Sort Alphabetically Z to A</asp:ListItem>
</asp:DropDownList>
还有一些后面的代码..
private short SortBy = 0;
protected void Page_Load(object sender, EventArgs e)
{
this.ddl_SortBy.SelectedIndex = -1;
this.ddl_SortBy.SelectedIndexChanged += new EventHandler(ddl_SortBy_SelectedIndexChanged);
if (!IsPostBack)
SearchDirectory();
}
public void ddl_SortBy_SelectedIndexChanged(object sender, EventArgs e)
{
SortBy = Convert.ToInt16(this.ddl_SortBy.SelectedItem.Value);
SearchDirectory();
}
我永远无法获得触发所选索引更改事件的第一个项目 - 因为未调用 SearchDirectory() 函数。我可以理解,当控件加载第一个项目时,可能是这样的情况,所以在选择时,索引实际上并没有改变。
我尝试将所选项目索引设置为 -1,并在页面加载时设置 ClearSelection(),但没有成功。
有什么想法吗?谢谢
【问题讨论】:
-
我还尝试使用
OnSelectedIndexChanged将事件调用放在 DropDownList 上,并删除 Page_Load 中的前两行,结果相同。 -
对每个页面请求做的第一件事就是将所选索引设置为静态值。就其余代码而言,它永远不会改变。
-
您期望发生什么?您是否希望事件在初始加载时发生?或者您是否遇到“重新选择”初始项目不起作用的问题?
-
否,在页面加载时它正常工作,因为它将只使用
SortBy,然后选择下拉列表中的第二个选项时,它可以正常工作,但选择时之后的第一个,什么也没发生,它只是回发,什么也不做。