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

Résolu
kallahan03 Messages postés 31 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 31 mars 2006 - 10 mars 2006 à 17:54
pholie60 Messages postés 1 Date d'inscription vendredi 6 avril 2007 Statut Membre 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

3 réponses

kallahan03 Messages postés 31 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 31 mars 2006
13 mars 2006 à 10:50
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 !
3
kallahan03 Messages postés 31 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 31 mars 2006
13 mars 2006 à 10:32
Quelqu'un aurait-il une idée ?
0
pholie60 Messages postés 1 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 27 novembre 2007
27 nov. 2007 à 10:55
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
0
Rejoignez-nous