2009-12-11 7 views
1

Je crée une application entièrement personnalisée (hérite uniquement de WebControl) combobox/dropdownlist contrôle de recherche avec autoComplete capacités. JQuery gère les événements onhover et onclick pour les éléments de liste (divs avec des chaînes) et gère l'appel de service Web pour obtenir la liste des éléments du texte correspondant.Attribut Custom SelectedValue

Le serveur gère les attributs personnalisés et le rendu du contrôle. Le problème est que je dois implémenter une propriété similaire à SelectedValue afin que lorsqu'un utilisateur sélectionne un élément parmi les résultats de la recherche, la valeur peut être utilisée sur le serveur pour un autre traitement. J'ai fait des recherches pendant plusieurs jours, mais je n'ai pas trouvé de façon claire et concise de traiter les données postérieures.

j'ai lu un blog qui a mentionné la mise en œuvre de l'interface IPostBackDataHandler, mais la mise en œuvre des appels RaisePostDataChangeEvent() pour appeler une méthode de serveur (comme SelectedIndexChange) que je ne suis pas la mise en œuvre au moment.

public void RaisePostDataChangedEvent() 
{ 
    this.SelectedIndexChanged(EventArgs.Empty); 
} 

Maintenant, pour la question: Quelqu'un a-t-il des conseils pour gérer cela? Ou est-il préférable de simplement hériter du contrôle dropdownlist et de surcharger la fonctionnalité existante? J'ai l'impression qu'il me manque un tout petit morceau qui ira parfaitement ensemble.

Répondre

0

Avez-vous envisagé d'extraire le code source du serveur source de Microsoft et de voir comment ils ont implémenté DropDownList? Cela vous permettra de voir comment ils ont résolu la partie liaison et événements du problème et vous donner une bonne idée de ce qu'il fait autrement. De cette façon, vous pouvez décider si vous voulez en hériter, ou si vous pouvez juste emprunter quelques idées pour la façon dont ils ont implémenté IPostBackDataHandler. Comme je n'ai aucune idée de ce que vous êtes en train de faire, je ne pourrais pas vous conseiller si vous devriez hériter de la liste déroulante telle qu'elle est, mais d'après mes impressions sur ce que vous faites, je dirais que vous ne le faites probablement pas. .

Vous pouvez également regarder la source à partir de AjaxControlToolkit car il a un composant similaire. Encore une fois, vous pouvez obtenir des idées sur la façon dont ces choses spécifiques sont traitées et les adapter à vos propres besoins.