2011-09-14 3 views
1

J'utilise un RadComboBox avec un ItemTemplate qui contient 50 contrôles TextBox dans lesquels un utilisateur peut entrer des informations. J'ajoute dynamiquement les 50 contrôles TextBox (voir ci-dessous). Lorsque les informations sont entrées dans les zones de texte, il semble que tout fonctionne comme prévu. Toutefois, lorsque je itère la collection de TextBoxes, les données ne sont pas là. Voici mon code:Problème avec RadComboBox avec ItemTemplate d'ASP: TextBox

page ASPX:

<telerik:RadComboBox ID="ddlListItemsQ1" runat="server" Width="200px" ShowDropDownOnTextboxClick="true" EnableEmbeddedSkins="false" Skin="Classic" TabIndex="2" ZIndex="100" disabled="true" OnClientDropDownOpening="OnDropdownListItemsOpening"> 
    <ItemTemplate> 
     <asp:TextBox ID="txtBoxQ1" runat="server" Width="160"/> 
    </ItemTemplate> 
</telerik:RadComboBox> 

textboxes de charge:

private void LoadDropdownListItems() 
{ 
    int itemCount = 0; 
    while (itemCount < 50) 
    { 
     ddlListItemsQ1.Items.Add(new RadComboBoxItem()); 
     itemCount++; 
    }     
} 

collection Examine:

RadComboBox ddlListItems = (RadComboBox)FindControl("ddlListItemsQ1"); 

IList<RadComboBoxItem> iList = ddlListItems.Items; 
foreach (RadComboBoxItem rcbi in iList) 
{ 
    if (rcbi.Text.Length > 0) 
     return true; 
} 

Rien dans l'une des zones de texte. Par exemple, si j'ai entré le texte dans 2 des 50, je devrais obtenir un "vrai" retourné sur le premier qu'il rencontre. Lorsque je débogue et regarde la collection - il n'y a rien stocké dans aucune des zones de texte même si dans l'interface utilisateur, il y en a deux avec des données. Je dois manquer quelque chose ...

Répondre

0

Votre boucle est de vérifier rcbi.Text mais le texte des RadComboBoxItem s que vous avez ajoutés à la zone de liste déroulante .... qui est différent du texte qui est dans le TextBox que vous avez placé dans le cadre du ItemTemplate. Changez votre boucle pour cela et cela devrait fonctionner:

IList<RadComboBoxItem> iList = ddlListItems.Items; 
foreach (RadComboBoxItem rcbi in iList) 
{ 
    //Find the inner textbox placed by the ItemTemplate 
    var innerTextBox = (TextBox)rcbi.FindControl("txtBoxQ1"); 

    /Check the textbox's Text property 
    if (innerTextBox.Text.Length > 0) 
     return true; 
} 
Questions connexes