2010-12-01 19 views
3

Je parcourt une série de contrôles et j'ai besoin de savoir quels contrôles un utilisateur final peut (via JavaScript ou directement) modifier la valeur qui est retournée. Où puis-je trouver une telle liste?Comment savoir si l'interface de contrôle ou de contrôle est modifiable par l'utilisateur?

Jusqu'à présent, j'ai ceci:

Private Function IsEditableControl(ByVal control As Control) As Boolean 
    Return TypeOf control Is IEditableTextControl _ 
    OrElse TypeOf control Is ICheckBoxControl _ 
    OrElse GetType(ListControl).IsAssignableFrom(control.GetType()) _ 
    OrElse GetType(HiddenField).IsAssignableFrom(control.GetType()) 
End Function 

Répondre

3

Je suis plutôt sûr que vous avez seulement besoin de savoir si ce contrôle implémente IPostBackDataHandler.

Public Shared Function IsControlEditable(ByVal ctrl As Control) As Boolean 
    Return TypeOf ctrl Is IPostBackDataHandler 
End Function 

« Si vous voulez un contrôle serveur vous concevez pour examiner les données de formulaire qui est affiché sur le serveur par le client, vous devez implémenter l'interface IPostBackDataHandler. Le contrat que cette interface définit permet un contrôle de serveur déterminer si son état devrait être modifié à la suite du retour et de soulever les événements appropriés. "

Ce sont les classes qui mettent en œuvre:

  • CheckBox
  • CheckBoxList
  • DropDownList
  • HtmlInputCheckBox
  • HtmlInputFile
  • HtmlInputHidden
  • HtmlInputImage
  • HtmlInputRadioButton
  • HtmlInputText
  • HtmlSelect
  • HtmlTextArea
  • ImageButton
  • ListBox
  • RadioButtonList
  • TextBox

Le gros avantage de vérifier la mise en œuvre IPostBackDataHandler est que votre fonction fonctionne également à l'avenir (avec des contrôles qui seront ajoutés à la structure) et pour les contrôles de tiers.

0

C'est l'approche que vous devez utiliser, mais il n'y a pas moyen d'obtenir une liste complète des contrôles, en particulier quand vous facteur dans les contrôles tiers potentiels du parti. Fondamentalement, ajouter à cette liste les autres contrôles que vous envisagez ... Les deux interfaces ci-dessus sont assez bonnes pour éliminer une gamme de contrôles ...

+0

Y a-t-il des choses évidentes que vous voyez qui me manquent? – adam0101