【发布时间】:2014-04-07 09:39:01
【问题描述】:
我有一个在运行时绑定的下拉列表,它的第一项为“--Select--”。
我有一个特定的要求,如果用户从下拉列表中选择不同的项目,然后在 selectedindexchanged 事件中,我正在检查如果所选项目不是第一个然后应用逻辑并在代码末尾将其重置回第一项。
protected void ddlExistingGoals_SelectedIndexChanged(object sender, EventArgs e)
{
if (ddlExistingGoals.SelectedValue != "0")
{
---- Perform Logic ----
ddlExistingGoals.Items.FindByValue("0").Selected = true;
}
else
{
clearAllControls();
}
}
当我编写上面的代码时,它不会在页面内呈现网格数据,并且还尝试了下拉 preRender 方法,如下所示:
protected void ddlExistingGoals_PreRender(object sender, EventArgs e)
{
if (ddlExistingGoals.SelectedValue != "0")
{
ddlExistingGoals.Items.FindByValue("0").Selected = true;
}
}
在这两种情况下,它既不会更改下拉选择的索引,也不会在页面上呈现其他控制逻辑数据。这是特殊的,我想知道是否可以在下拉的 selectedindexchanged 事件中更改选定的索引?!提前致谢。
【问题讨论】:
-
如果
selection changed没有触发,这意味着您没有正确地将处理程序连接到事件。使用调试器检查它是否工作。此外,SelectedValue不会检查您的索引,而是检查所选元素的字符串值。如果你期待--Select--",你应该检查"--Select--",而不是"0"。对于索引检查或设置,您有SelectedIndex属性。 -
你能添加你的下拉绑定代码吗?并且您是否设置了下拉菜单的“AutoPostBack”属性?
-
正如@MayurBorad 所说,您需要将
AutoPostBack设置为true。 -
selectedindexchanged 事件已在执行,我已将 autopostback 设置为 true,因此情况并非如此。我的问题是为什么我不能使用“selectedindexchanged”事件中的文本/值查找来更改其选定的索引?
-
你能添加你的下拉绑定代码吗?它会调用每个回发事件吗?