2009-06-08 27 views
6

Tengo una página web que tiene un Telerik RadComboBox en la página. Una de las propiedades de este ComboBox es EmptyMessage, que llena el combobox con un mensaje cuando un elemento no está seleccionado. Estoy vinculando mi cuadro combinado a un origen de datos en tiempo de ejecución y, por alguna razón, elimina este VacíoMensaje. ¿Hay alguna forma de mantener intactos mis datos y tener el mensaje vacío allí? Y por defecto al mensaje vacío?Agregar cadena vacía a RadComboBox

Respuesta

7

Parece que la respuesta aceptada en Telerik dice que utiliza el script del lado del cliente para evitar la edición de texto.

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> 
0

¿Está 'AppendDataBoundItems' establecido en verdadero?

+0

Lamentablemente esto no tiene nada que ver con ello. EmptyMessage solo se usa cuando AllowCustomText se establece en true, por algún motivo. No parece que se pueda usar el estilo EmptyMessage sin permitirles a los usuarios ingresar texto personalizado. – Grank

0

Otra opción es agregar el elemento al cuadro combinado justo después del enlace, y luego configurarlo como seleccionado.

+0

Eso es en última instancia, lo que proporciona la respuesta @ te. –

+0

@rockinthesixstring Sí, parece que proporcionó el código simple 4 meses después de que se publicó esta respuesta ... – Nick

-3

Encontré la respuesta. Para cualquier persona curiosa o alguien que necesite hacer algo similar, debe establecer la propiedad AllowCustomText en True. Esto solucionó mi problema.

+1

Esta no es una buena solución en muchos casos, porque también permite a un usuario ingresar su propio texto personalizado, en lugar de forzarlo para seleccionar uno de los elementos existentes. Supongo que en la mayoría de los casos, este tipo de comportamiento no es deseado. –

+0

Permitir texto personalizado no es la respuesta correcta. La mayoría de las veces solo quieres que puedan usar los valores que proporcionas. Consulte la respuesta de @ te para la respuesta "correcta". –

+1

¿Cómo pueden ustedes marcar mi respuesta? Yo soy el que hace la pregunta. Mi respuesta solucionó el problema que estaba teniendo. – Icemanind

5
RadComboBox1.Items.Insert(0, New RadComboBoxItem("Select a continent")) 

Esto agregará "Seleccione un continente" como primer elemento en el cuadro combinado.

+2

El problema con esto es que no puede usar el estilo EmptyMessage. Por qué incluso usar un RadComboBox entonces; a menos que estés usando plantillas, podrías volver al buen viejo asp: DropDownList. : P – Grank

+0

Esto es viejo, lo sé, pero @Grank - Yo uso el método de @ te y funciona de maravilla.Usted pregunta "¿por qué usar RadComboBox?", Es por la maravillosa característica de autocompletar/autosugerir que no obtiene con la buena DropDownList. –

0

a ponerlo de esta

ComboBox.Text = String.Empty 
1

En tiempo de diseño establecer la propiedad EmptyMessage.

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

En tiempo de ejecución siguiente código funciona para mí.

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