在选定索引更改事件中设置下拉列表选定值

本文关键字:设置 下拉列表 索引 事件 | 更新日期: 2023-09-27 17:57: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;
    }
}

在这两种情况下,它既不会更改下拉所选索引,也不会在页面上呈现其他控制逻辑数据。这很特别,我想知道是否可以在下拉列表的选定索引更改事件中更改选定的索引?!提前谢谢。

在选定索引更改事件中设置下拉列表选定值

我不确定.选定值和 .选择是相同的。.选择是一个仅一个项目的属性。它无法知道发生了什么其他项目。而。SelectedIndex 是 Dropdown 的一个属性,Dropdown 可以首先取消选择以前选择的项目。

ListItem 不知道它属于哪个列表(或多个列表),所以它怎么能在其他列表中选择自己?

因为"选定"是列表项的属性,而不是 ddl 的属性。通过设置..选中后,您不会在所有者列表中选择项目,如本例所示。设置。选定项。相反,您自己设置项目,所有者必须为是否应该选择该项目而斗争。

ListItem myitem = ddlChoseModel.Items.FindByValue(ModelID);
ddlChoseModel.SelectedValue = myitem.Value;