FineUI 官方论坛

标题: DropDownList控件在无选定项时总是会触发SelectedIndexChanged事件 [打印本页]

作者: 是梦~`    时间: 2016-8-1 12:00
标题: DropDownList控件在无选定项时总是会触发SelectedIndexChanged事件
本帖最后由 是梦~` 于 2016-8-1 12:00 编辑

Bug描述:当下拉列表控件在页面回发时无选中项,总是会触发该控件的SelectedIndexChanged事件。
涉及版本:全版本
Bug原因:

FineUI/WebControls/Field.TextField.DropDownList/DropDownList.cs第1838行(LoadPostData方法中)
对item的判断条件设置,会导致item为null时,LoadPostData方法总是返回True

  1.                 ListItem item = Items.FindByValue(postValue);
  2.                 if (item != null && item.Text == postText) <font color="red">//该处判定条件设置有问题</font>
  3.                {
  4.                     // 本次选中的是下拉项
  5.                     if (SelectedValue != postValue)
  6.                     {
  7.                         SelectedValue = postValue;
  8.                         FState.BackupPostDataProperty("SelectedValue");
  9.                         return true;
  10.                     }
  11.                 }
  12.                 else
  13.                 {
  14.                     //// 本次是用户输入的值
  15.                     //if (Text != postText)
  16.                     //{
  17.                     SelectedValue = null;
  18.                     FState.BackupPostDataProperty("SelectedValue");

  19.                     Text = postText;
  20.                     FState.BackupPostDataProperty("Text");
  21.                     return true;
  22.                     //}
  23.                 }
复制代码
[attach]9068[/attach]


作者: 是梦~`    时间: 2016-8-1 12:51
我的修正办法

[attach]9069[/attach]

因为该控件到目前为止不可能由“有选中项”的状态,变为“无选中项”的状态。任何对下拉列表控件的选项改变,只可能导致其有选中项。所以,
当item为null(即无选中项时)应始终返回false。

作者: 2517833176    时间: 2016-8-2 21:18
自问自答




欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4