2010-02-05 5 views
2

J'ai un répéteur qui contient un RadComboBox Telerik:En utilisant Telerik RadComboBox dans un répéteur

<asp:Repeater ID="rpt" runat="server"> 
    <ItemTemplate> 
     <telerik:RadComboBox ID="rcb" runat="server" EnableLoadOnDemand="true" 
      AllowCustomText="true" ItemRequestTimeout="1000" 
      NumberOfItems="10" MarkFirstMatch="false"> 
     </telerik:RadComboBox> 
    </ItemTemplate> 
</asp:Repeater> 

En cas ItemDataBound du répéteur, je câblage l'événement ItemsRequested comme ceci:

private void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e) { 
    RadComboBox rcb = (RadComboBox)e.Item.FindControl("rcb"); 
    rcb.ItemsRequested += rcb_ItemsRequested; 
} 
private void rcb_ItemsRequested(object o, RadComboBoxItemsRequestedEventArgs e) { 
    // Database call to load items occurs here. 
    // As configured, this method is never called. 
} 

Actuellement, la méthode rcb_ItemsRequested côté serveur n'est jamais appelée. Je suspecte que le câblage de l'événement ItemsRequested dans ItemDataBound est problématique, mais le problème peut se trouver ailleurs.

Avez-vous des idées pour utiliser correctement le Telerik RadComboBox dans un répéteur?

Répondre

1

Avez-vous essayé de placer le câblage du gestionnaire d'événements dans le balisage plutôt que de l'ajouter dynamiquement?

Aussi - vous le savez sans doute, mais juste au cas où - ItemsRequested est un événement qui se déclenche uniquement dans certaines conditions. Pour citer les documents:

The ItemsRequested event occurs when the EnabledLoadOnDemand property is True and the user types text into the input field or clicks on the drop-down toggle image when the list is empty. - Reference

Est-ce que votre scénario ci-dessus correspond?

EDIT:

J'ai testé un code. Les travaux suivants (L'événement ItemsRequested feux pour les tous ComboBoxes et ajoute les trois éléments de test pour le menu déroulant à la volée ..):

Markup:

<form id="form1" runat="server"> 
    <asp:ScriptManager ID="ScriptManager1" runat="server" /> 

    <asp:Repeater ID="rpt" runat="server" OnItemDataBound="rpt_ItemDataBound"> 
     <ItemTemplate> 
      <br /> 
      <telerik:RadComboBox ID="rcb" runat="server" EnableLoadOnDemand="true" AllowCustomText="true" 
      ItemRequestTimeout="1000" NumberOfItems="10" MarkFirstMatch="false" /> 
     </ItemTemplate> 
    </asp:Repeater> 
</form> 
Code

derrière:

protected void Page_Load(object sender, EventArgs e) 
{ 
    List<string> data = new List<string>(); 
    data.Add("Item 1"); 
    data.Add("Item 2"); 

    //add some items to the repeater to force it to bind and repeat.. 
    rpt.DataSource = data; 
    rpt.DataBind(); 
} 

protected void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    //wire the event 
    RadComboBox rcb = (RadComboBox)e.Item.FindControl("rcb"); 
    rcb.ItemsRequested += rcb_ItemsRequested; 
} 

protected void rcb_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e) 
{ 
    //add the items when requested. 
    (sender as RadComboBox).Items.Add(new RadComboBoxItem("Item1", "1")); 
    (sender as RadComboBox).Items.Add(new RadComboBoxItem("Item2", "2")); 
    (sender as RadComboBox).Items.Add(new RadComboBoxItem("Item3", "3")); 
} 
+0

J'ai essayé de câbler l'événement dans le balisage en vain. Bonne suggestion, cependant. Incidemment, je crois que le EnabledLoadOnDemand que vous avez cité de la documentation est en fait EnableLoadOnDemand; J'ai essayé les deux, mais pas de chance pour le moment. Je crois que je suis satisfait de toutes les conditions nécessaires (nous utilisons le RadComboBox tout au long de notre application - mais pas dans les répéteurs - donc je suis familier avec son utilisation). Merci pour vos suggestions. Je vais examiner cela plus en détail; Bien sûr, je suis ouvert à toute autre idée que vous pourriez avoir. – mcliedtk

+0

lol ouais je n'ai pas remarqué la faute de frappe. Cela a été copié directement à partir de la documentation du fournisseur. Je pense que vous avez raison - c'est EnableLoadOnDemand. –

+0

J'ai ajouté un exemple de code de travail .. j'espère que ça aide .. –

Questions connexes