【问题标题】:ASP.NET AJAX's Combobox - Cannot Programatically Change the Selected ItemASP.NET AJAX 组合框 - 无法以编程方式更改所选项目
【发布时间】:2009-05-19 04:35:51
【问题描述】:

我在我的 Web 应用程序中使用新的 Microsoft ASP.NET Ajax ComboBox 控件,但我无法弄清楚如何以编程方式设置选定的列表项。例如,我有一个接受地址的表单和一个接受城市名称的 ComboBox。用户输入并保存地址后,我想重置表单,包括ComboBoxes。

使用常规的 ASP.NET 下拉列表控件,我可以重置所选项目,如下所示:

City.SelectedIndex = -1;

ASP.NET AJAX ComboBox 控件接受这行代码;但是当页面回发时,之前选择的值仍然被选中。帮助将不胜感激。

更新:我尝试了以下无济于事...

City.ClearSelection();

【问题讨论】:

    标签: asp.net-ajax


    【解决方案1】:

    对此的一种解决方案是在第二次加载页面或使其在更新面板中可见之前使用以下 2 个命令

                Combobox1.ClearSelection()
                Combobox1.Dispose()
    

    这将清除组合框值。

    希望这会有所帮助。我花了一段时间才找到它。

    【讨论】:

      【解决方案2】:

      这是 CodePlex 上的一个未解决问题。所以,因为它是一个错误,所以在发布补丁之前没有解决方案。这是 CodePlex 上的issue

      【讨论】:

        【解决方案3】:

        当我使用 DropDownStyle="DropDown" 这个命令清除文本 combobox1.SelectedItem.Text = ""

        【讨论】:

          【解决方案4】:

          * 截至 2011 年 2 月 18 日,该工具包的版本 3.5.40412.2 仍然是一个错误 *

          为了所有的谷歌搜索者,我发现的解决这个问题的方法都没有奏效(包括涉及遍历控件集合以查找隐藏控件、Dispose 等的各种修复)

          * 这对我有用,无论我将组合框埋在其他控件/面板等中有多深*

          combobox.Items.Clear();

          ((TextBox)cmbMachineNum.FindControl("TextBox")).Text = "";

          【讨论】:

          • 非常感谢@Paul。这让我整天发疯...... :)
          【解决方案5】:

          试试:

          ComboBox.Text = "";  
          ComboBox.ClearSelection(); 
          

          【讨论】:

          • 刚刚尝试过,没有运气。先前选择的值仍然存在。唯一的解决方案是重新绑定列表,但我试图避免另一个数据库命中。
          • 是否有明确方法的项目集合? ComboBox.Items.Clear()?
          • 是的,这确实清除了列表项,但所选值仍然显示在框中。
          【解决方案6】:

          您指的是 CascadingDropDown 吗?如果是这样,请将 CascadingDropDown 的 SelectedValue 设置为 null。

          CascadingDropDown1.SelectedValue = null;
          

          【讨论】:

          • Tim,实际上我说的是新的 MS Ajax Control Toolkit 的 ComboBox 控件。不幸的是,将控件的 .SelectedValue 属性设置为 null 仍然不起作用。在这一点上确信这是控件中的一个错误。不过,希望 MS 能确认一下。
          【解决方案7】:

          好的,所以如果你想设置索引,它实际上存储在控件的隐藏字段中,它看起来像。所以我正在做的是清除它。

          foreach (Control control in cbFeatures.Controls)
                      {
                          if (control is HiddenField)
                              ((HiddenField)control).Value = "0";
                      }
          

          这对我来说非常有用,因为值是您要设置的索引。

          【讨论】:

            【解决方案8】:

            这可以通过清除隐藏字段来解决,如以下博客http://techiecentre.blogspot.com/中所述

            【讨论】:

              【解决方案9】:

              City.ClearSelection() 替换为以下内容:

              City.Items.Insert(0, "");
              City.SelectedIndex = 0;
              

              现在这将在 City 控件的下拉列表部分中放置一个空字符串,并将文本设置为空字符串。要从下拉列表中删除空字符串,请使用

              City.Items.Remove("");
              

              在城市Page_Load 活动中。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2010-09-08
                • 2011-08-17
                • 2020-01-22
                • 1970-01-01
                • 2023-03-21
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多