2009-06-08 7 views
6

J'ai une page Web qui a un Telerik RadComboBox sur la page. Une des propriétés de cette zone de liste déroulante est EmptyMessage, qui remplit la zone de liste déroulante avec un message lorsqu'un élément n'est pas sélectionné. Je lie mon combobox à une source de données à l'exécution et pour une raison quelconque, il efface ce EmptyMessage. Y a-t-il un moyen de garder mes éléments de données intacts et d'avoir le message vide là aussi? Et par défaut le message vide?Ajouter une chaîne vide à RadComboBox

Répondre

7

On dirait que la réponse acceptée sur Telerik dit que vous utilisez un script côté client pour empêcher l'édition de texte.

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-ce que 'AppendDataBoundItems' est défini sur true?

+0

Malheureusement, cela n'a rien à voir avec cela. EmptyMessage est uniquement utilisé lorsque AllowCustomText est défini sur true, pour une raison quelconque. Il ne semble pas que l'on puisse utiliser le style EmptyMessage sans permettre aux utilisateurs d'entrer du texte personnalisé. – Grank

0

Une autre option consiste à ajouter l'élément à la liste déroulante juste après la liaison, puis à le définir comme sélectionné.

+0

C'est finalement ce que la réponse de @ te fournit. –

+0

@rockinthesixstring Ouais, on dirait qu'il a fourni le code simple 4 mois après que cette réponse a été postée ... – Nick

-3

J'ai trouvé la réponse. Pour toute personne curieuse ou ayant besoin de faire des choses similaires, vous devez définir la propriété AllowCustomText sur True. Cela a résolu mon problème.

+1

Ce n'est pas une bonne solution dans de nombreux cas, car il permet également à un utilisateur d'entrer son propre texte personnalisé, au lieu de forcer pour sélectionner l'un des éléments existants. Je suppose que dans la plupart des cas, ce type de comportement n'est pas voulu. –

+0

Autoriser le texte personnalisé n'est pas la bonne réponse. La plupart du temps, vous voulez seulement qu'ils soient en mesure d'utiliser les valeurs que vous fournissez. Veuillez voir la réponse de @ te pour la "bonne" réponse. –

+1

Comment pouvez-vous les gars marquer ma réponse? Je suis celui qui pose la question. Ma réponse a réglé le problème que j'avais. – Icemanind

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

Ceci ajoutera "Sélectionner un continent" comme premier élément de la liste déroulante.

+2

Le problème avec ceci est que vous n'utilisez pas le style EmptyMessage. Pourquoi même utiliser un RadComboBox alors; À moins que vous n'utilisiez des modèles, vous pourriez aussi bien revenir au bon vieux ASP: DropDownList. : P – Grank

+0

C'est très vieux je sais, mais @Grank - J'utilise la méthode de @ te et ça marche à merveille.Vous demandez "pourquoi même utiliser le RadComboBox" - c'est pour la merveilleuse fonctionnalité autocomplete/autosuggest que vous n'obtenez pas avec le bon vieux DropDownList. –

0

vient de mettre cette

ComboBox.Text = String.Empty 
1

Dans le temps de conception définir la propriété EmptyMessage.

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

À l'exécution, le code suivant fonctionne pour moi.

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