[Asp.Net 2.0] Afficher le footer d'un gridview quand la source de donnée est vid [Résolu]

Messages postés
31
Date d'inscription
lundi 6 novembre 2000
Dernière intervention
31 mars 2006
- - Dernière réponse : pholie60
Messages postés
1
Date d'inscription
vendredi 6 avril 2007
Dernière intervention
27 novembre 2007
- 27 nov. 2007 à 10:55
Bonjour à tous,

Voila mon problème :

Je souhaite utiliser un gridview pour ajouter/modifier/supprimer des données d'une table avec relations n/n (4 colonnes dont 2 clés étrangères)
J'ai ajouté dans le footer de chaque colonne modèle le controle qui va bien :
1ère colonne un dropdownlist (ddl1), c'est le code promo d'un article en clé étrangère
2ème et 3ème colonne un textbox (tb1 et tb2)
4ème colonne le linkbutton Ajouter (lkb1)
La 2ème valeur (le code de l'article) pour l'autre clé étrangère je la récupère dans un querystring

Le problème c'est que au début, il n'y a pas d'enregistrement dans la base et donc le gridview ne s'affiche pas. On ne peut même pas afficher uniquement le footer en cas d'absence de données, sur le net pas mal de monde pose la question, sans réponse.
Résultat, impossible d'insérer des données à moins de faire un formulaire pour insérer la 1ère ligne à chaque nouvel article (pas terrible, on ne profite pas de l'asp.net 2.0, au fait j'utilise Visual web developer).
J'ai pensé à utiliser le EmptyDataTemplate (la zone qui est affichée lorsque le gridview est vide) et d'ajouter un dropdownlist + un button Ajouter, en cliquant je ferai un Insert() sur le SqlDataSource et ensuite je mettrai en mode edition la seule ligne de mon gridview afin de compléter les informations (en + mon footer s'affichera). Le problème c'est que je n'arrive pas à accéder aux webcontrols présents dans ce EmptyDataTemplate. Apparement il est de type System.Web.UI.CompiledTemplateBuilder. Comment accéder à ses controles enfants ?
Avez-vous une idée ? Existe-t-il un autre moyen pour afficher le footer d'un gridview vide ?
Dans les commandes du gridview, il existe le button et la commande Nouveau (ou New) pour créer des lignes. Je reconnais avoir du mal à utiliser cette commande contrairement à modifier ou supprimer. Comment l'utiliser ?

Merci pour votre aide
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
31
Date d'inscription
lundi 6 novembre 2000
Dernière intervention
31 mars 2006
3
Merci
Ok j'ai trouvé la solution pour ceux que ça interresse.
http://forums.asp.net/1143116/ShowPost.aspx

En fait pour accéder aux web controls du EmptyDataTemplate d'un gridview :


FindControl works only at a "naming container" level, and your DDL's naming container is the gridview row or template containing your EmptyData controls. One way around this is to use the button's naming container to find the other controls, since you already have a reference to the button clicked, through the "sender" argument:


Dim ddlNumPpl As DropDownList = CType(sender, Button).NamingContainer.FindControl("ddlNumPpl")


Et pour moi ça fonctionne !

Merci kallahan03 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de kallahan03
Messages postés
31
Date d'inscription
lundi 6 novembre 2000
Dernière intervention
31 mars 2006
0
Merci
Quelqu'un aurait-il une idée ?
Commenter la réponse de kallahan03
Messages postés
1
Date d'inscription
vendredi 6 avril 2007
Dernière intervention
27 novembre 2007
0
Merci
Bonjour,
Je dois avoir le meme probleme.
Je veux afficher un datagrid (vide) et qui est rempli au fur et a mesur de la saisie dans le pied de page.
Le souci est que le DG n'est pas visible au chargement de la page.
Comment faire ? (je n'ai pas compris la solution décrite précédemment).
Merci
pholie60
Commenter la réponse de pholie60

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.