【问题标题】:Adding empty string to RadComboBox将空字符串添加到 RadComboBox
【发布时间】:2010-11-01 07:03:52
【问题描述】:

我有一个页面上有 Telerik RadComboBox 的网页。此 ComboBox 的属性之一是 EmptyMessage,它在未选择项目时用消息填充组合框。我在运行时将我的组合框绑定到数据源,出于某种原因,它会擦除​​此 EmptyMessage。有没有办法让我的数据项保持完整并在那里也有空消息?并将其默认为空消息?

【问题讨论】:

    标签: c# asp.net vb.net telerik radcombobox


    【解决方案1】:

    似乎 Telerik 上接受的答案说您使用客户端脚本来防止文本编辑。

    Telerik forum page

    <telerik:Radcombobox ID="RadComboBox1" runat="server" AllowCustomText="True" EmptyMessage="-please select one-">    
    <Items>     
        <telerik:RadComboBoxItem runat="server" Text="Item1"></telerik:RadComboBoxItem>     
        <telerik:RadComboBoxItem runat="server" Text="Item2"></telerik:RadComboBoxItem>     
    </Items>    
    

    <script type="text/javascript"> 
    function pageLoad() 
    { 
       var combo = $find("<%= RadComboBox1.ClientID %>"); 
       var input = combo.get_inputDomElement(); 
       input.onkeydown = onKeyDownHandler; 
    } 
    function onKeyDownHandler(e) 
    { 
      if (!e) 
      e = window.event;        
      e.returnValue = false; 
      if (e.preventDefault) 
      { 
        e.preventDefault(); 
      } 
    } 
    </script> 
    

    【讨论】:

      【解决方案2】:
      RadComboBox1.Items.Insert(0, New RadComboBoxItem("Select a continent"))
      

      这将添加“选择大陆”作为组合框中的第一项。

      【讨论】:

      • 这个问题是你不能使用 EmptyMessage 样式。那么为什么还要使用 RadComboBox 呢?除非您使用模板,否则您还不如回到旧的 asp:DropDownList。 :P
      • 我知道这已经很老了,但是@Grank - 我使用@te 的方法,它可以创造奇迹。你问“为什么还要使用 RadComboBox”——它是因为出色的自动完成/自动建议功能,而好的 ol' DropDownList 却没有。
      【解决方案3】:

      放这个

       ComboBox.Text = String.Empty
      

      【讨论】:

        【解决方案4】:

        在设计时设置 EmptyMessage 属性。

        <telerik:RadComboBox ID="ddlCategory" EmptyMessage="-Select-" runat="server" Width="120px" DropDownWidth="100px" AllowCustomText="true">
        </telerik:RadComboBox>    
        

        在运行时,以下代码对我有用。

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

        【讨论】:

          【解决方案5】:

          “AppendDataBoundItems”是否设置为 true?

          【讨论】:

          • 遗憾的是,这与它无关。 EmptyMessage 仅在 AllowCustomText 出于某种原因设置为 true 时使用。如果不允许用户输入自定义文本,似乎无法使用 EmptyMessage 样式。
          【解决方案6】:

          另一种选择是在绑定后立即将项目添加到组合框中,然后将其设置为选中。

          【讨论】:

          • 这最终是@te 的答案所提供的。
          • @rockinthesixstring 是的,看起来他在发布此答案 4 个月后提供了简单代码...
          【解决方案7】:

          我找到了答案。对于任何好奇或需要做类似事情的人,您需要将 AllowCustomText 属性设置为 True。这解决了我的问题。

          【讨论】:

          • 这在很多情况下都不是一个好的解决方案,因为它还允许用户输入他们自己的自定义文本,而不是强迫他们选择现有项目之一。我猜想在大多数情况下,这种行为是不需要的。
          • 允许自定义文本不是正确答案。大多数时候,您只希望他们能够使用您提供的值。请参阅@te 的“正确”答案。
          • 你们怎么可能记下我的答案?我是提出这个问题的人。我的回答解决了我遇到的问题。
          • 我理解它“解决了”您的问题,但并没有解决问题。正如我在评论中所说。如果您实际上不希望最终用户能够输入自定义文本,那么您需要在下拉列表的开头插入一条空白记录。 @te 巧妙地做到了这一点,你只需要记住在绑定你的 RadComboBox 之后再做。
          • @Chase 阻止用户输入自定义文本不是 icemanind 标准的一部分。它确实回答了他提出的问题。这不应该被否决。改为投票给更好的答案。
          猜你喜欢
          • 2015-10-21
          • 2017-03-09
          • 2023-02-04
          • 1970-01-01
          • 1970-01-01
          • 2023-04-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多