2010-10-12 12 views
0

Disons que j'ai trois contrôles DropDownList dans un contrôle utilisateur Web et qu'ils dépendent les uns des autres.Obtenir la valeur de contrôle à partir du contrôle utilisateur Web

  • Catégories
  • Marques
  • Produits

Explication: Après avoir choisi une catégorie dans les catégories de la liste déroulante, les marques associées sont chargées dans les marques DropDownList et même chose se produit lorsque je choisis spécifique Marque et ils sont tous situés dans un contrôle d'utilisateur Web car je l'utilise trop sur des pages différentes, je ne veux pas copier et coller le même code sur toutes les pages.

Problème: Les pages peuvent contenir un contrôle GridView et DataSource qui a besoin d'un paramètre supplémentaire Where pour récupérer toutes les données nécessaires et ce paramètre pourrait dépendre de produit sélectionné dans le contrôle des produits DropDownList.

Question: Alors, comment puis-je obtenir que sélectionné Valeur de produits de produits DropDownList pour se lier à SQLDataSource ou tout autre contrôle DataSource.

Mes pensées: Je crois que je peux résoudre ce problème de la façon suivante.

  • Je peux utiliser une variable statique qui est mise à jour une fois les produits sélectionnés. Cette variable de champ peut être publique afin que tout le monde puisse l'atteindre.
  • Produits sélectionnés DropDownList peut créer un champ QueryString pour graper la valeur sélectionnée.
  • De la même manière, la liste déroulante peut créer une variable de session à la volée et je peux récupérer la valeur
  • Il peut peut-être créer un champ masqué.

Mais: Eh bien ce sont quelques-unes de mes pensées, mais je les ai trouvés si naïf à mettre en œuvre. J'ai besoin de quelque chose d'élégant et satisfaisant pour résoudre ce problème. Cela devrait ressembler à une passerelle entre le contrôle de l'utilisateur Web et le monde extérieur. Peut-être qu'une classe séparée ou une propriété peut m'aider dans la solution de passerelle.

De toute façon, j'attends vos réponses.

Répondre

2

Si je comprends bien la question:

Vous pouvez ajouter une propriété au contrôle de l'utilisateur qui expose les produits ddl valeur sélectionnée.

Vous pouvez également ajouter et déclencher un événement à partir du contrôle utilisateur qui se déclenche lorsque la valeur DDL sélectionnée des produits est modifiée. La création d'un argument d'événement personnalisé contenant la valeur du produit lui permet d'être transmis directement au gestionnaire d'événements. Ensuite, vos pages peuvent gérer l'événement déclenché par le contrôle utilisateur, avoir la valeur du produit et lier la grille.

0

Vous pouvez lier les événements DropDownList.SelectedIndexChanged à la même fonction et tester les propriétés SelectedValue de chaque DropDownList. Si leurs SelectedValues ​​sont valides, liez la grille à votre DataSource.

Je l'ai fait par le passé lorsque j'avais besoin que les utilisateurs saisissent une certaine quantité de données avant de pouvoir interroger la base de données. J'ai placé la propriété cachée sur mon GridView si les DropDownLists n'étaient pas valides, et l'ai remise à zéro quand elles ont été correctement liées.