【问题标题】:Set dropdownlist selected value inside selectedindexchanged event?在 selectedindexchanged 事件中设置下拉列表选定值?
【发布时间】: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”事件中的文本/值查找来更改其选定的索引?
  • 你能添加你的下拉绑定代码吗?它会调用每个回发事件吗?

标签: c# asp.net


【解决方案1】:

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

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

因为“Selected”是 ListItem 的属性,而不是 ddl 的属性。通过设置 ..选中,你不选择所有者列表中的项目,如case.of 设置.SelectedItem。而是您自己设置项目,而所有者 必须为是否应该选择该项目而斗争。

使用

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多