【问题标题】:How dropdown find out that its selected index has changed and need to fire selected index changed event?下拉列表如何发现其选定的索引已更改并需要触发选定的索引更改事件?
【发布时间】:2011-02-18 12:12:43
【问题描述】:

下拉菜单如何发现其选定索引已更改并需要触发选定索引更改事件?

假设我有一个与 objectdatasource 绑定的下拉列表 和 objectdatasource 有以下项目 选择1 选择2 选择3 选择4 然后我将默认值 --select-- 添加到 objectdatasource,现在填充了下拉列表,我可以看到上面的所有项目。我有一个按钮,并在其客户端单击,通过 java 脚本我将 opt4 设置为所选项目。现在,如果我从下拉列表中选择 --select-- 那么它不会触发选定的索引更改事件,但它会触发下拉列表的数据绑定事件,然后如果我选择任何其他值,它会触发这两个事件,然后如果我再次选择 --select--然后它会触发这两个事件,只有第一次选择--select--然后它不会触发选定的索引更改事件,但如果我选择--select--它会触发这两个事件。

所以我的问题是 dorpdown 如何发现它的选择索引发生了变化。

【问题讨论】:

  • 没明白你能不能说的更清楚一点
  • @Dorababu:问题已更新。

标签: asp.net


【解决方案1】:

如果 includeStagesBeforeAsyncPoint 为 true,则 OnSelectedIndexChanged 应该总是在 DropDownList 回发时触发

System.Web.UI.Page

private void ProcessRequestMain(bool includeStagesBeforeAsyncPoint, bool includeStagesAfterAsyncPoint) {
    if (includeStagesBeforeAsyncPoint) {
        ...
        if (this.IsPostBack) {
            ...
            this.RaiseChangedEvents();


internal void RaiseChangedEvents() {
    ...
    for (int i = 0; i < this._changedPostDataConsumers.Count; i++) {
        ...
        postBackDataHandler.RaisePostDataChangedEvent();
    }
}

System.Web.UI.WebControls.DropDownList

void IPostBackDataHandler.RaisePostDataChangedEvent()
{
    this.RaisePostDataChangedEvent();
}

protected virtual void RaisePostDataChangedEvent() {
    ..
    this.OnSelectedIndexChanged(EventArgs.Empty);
}

【讨论】:

  • 请您详细说明您的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多