我有一个我在运行时绑定的下拉列表,它的第一个项目为“--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事件中更改所选索引?在此先感谢。
答案 0 :(得分:0)
我不确定.SelectedValue和.Selected是否相同。选择是一个 只有一个项目的财产。它无法知道发生了什么 其他项目。而.SelectedIndex是Dropdown的属性,而Dropdown可以 首先取消选择以前选择的项目。
ListItem不知道它属于哪个列表(或列表),所以它怎么做 在其他列表中选择自己?
因为"选择"是ListItem的属性,而不是ddl的属性。通过设置 ..选择,您不必选择所有者列表中的项目,如case.of 设置.SelectedItem。而是将项目设置在自己和所有者身上 必须争取是否应该选择该项目。
使用
ListItem myitem = ddlChoseModel.Items.FindByValue(ModelID);
ddlChoseModel.SelectedValue = myitem.Value;