IF & Container.DataItem dans une page ASP [Résolu]

Signaler
Messages postés
30
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
28 septembre 2005
-
jesusonline
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
-
Voila j'ai un datagrid qui m'affiche le nom d'une société avec son logo.
Le libelle de la société et le nom du fichier image sont dans ma Base de données.
Mais le nom du fichier image peut être vide (NULL)

Donc je voulais faire un IF qui teste si j'ai une valeur ou non comme ceci :

<%# IF Container.DataItem("logo_compagnie") = nothing then%>
http://blogs.developpeur.org/cyril/archive/2004/11/29/3570.aspx

Je suis donc aller voir le lien du site, mais je ne comprend rien et je ne vois pas du tout comment faire, ...

Aidez-moi, SVP.

13 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
18
container.dataitem("truc") = "<NULL>" ? container.Dataitem = dbnull.value ?

ou alors

container.dataitem("truc").indexof("jpg") < 0 'ca te dira si oui ou non le champ contient jpg

met un point d'arret et regarde la valeur, tu pourras ainsi faire ton test.


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
18
oui, pas le temps d'expliquer ;)

pourquoi tu veux un label ? ca t'offre quoi de plus ?
... ,"" & Container.dataitem("...") & "", ...

ca t'irait pas ?


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
18
la page interressant c'est : http://www.devx.com/vb2themax/Article/19908/1763/page/4

Mais dis moi un peu plus ou est le problème car la ...


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
Messages postés
30
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
28 septembre 2005

Et bien apparemment il n'est pas possible de faire un :

<%# IF Container.DataItem("logo_compagnie") = nothing then%> ou
<% IF%><%# Container.DataItem("logo_compagnie")%> <% = nothing then%> ou
<% IF <%# Container.DataItem("logo_compagnie")%> = nothing then%>

Donc je ne peux pas tester si dans ma table le champ "logo_compagnie" est vide ou non.
Je peux faire ceci :

<HeaderStyle HorizontalAlign="Center" Width="100px"></HeaderStyle>


' />



Mais si le champ dans la base est vide, le petit schéma avec la croix rouge disant qu'il n'y a pas d'image apparait.
Je voudrais donc afficher à la place le texte : Pas de logo.
D'ou mon besoin de faire un IF. Mais le Container.dataItem a l'intérieur d'un IF apparaement ca ne marche pas, ...
Et je ne comprend pas la solution de rechange sur la page 4.

:-(
<HEADERSTYLE Width ="100px" HorizontalAlign= "Center"></HEADERSTYLE> <HEADERSTYLE Width ="100px" HorizontalAlign="Center"></HEADERSTYLE>
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
18
" />

c'est surement plus simple que la solution plus haut qui sert dans des cas bien compliqué ...


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
Messages postés
30
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
28 septembre 2005

Alors j'ai testé, ca donne bien une condition avec vrai ou faux mais le souci c'est qu'il me trouve quand même quelque chose pour mes champs vides. Je m'explique :

Je suis allé voir dans ma base de donner SQL, j'ai des champs "logo_compagnie" qui contiennent le nom du fichier et j'en ai qui sont marqué <NULL>

Et bien dans l'affichage de mon datagrid j'ai toujours l'image avec la croix rouge disant qu'il ne trouve pas l'image pour les champs <NULL>.

C'est donc que même si j'ai <NULL> il trouve quelque chose dans le Container.DataItem("Logo_copmpagnie")

As-tu une idee d'ou cela peut provenir ?


PS : J'ai tester en condition :
Container.DataItem("Logo_copmpagnie") = <NULL> mais il n'en veut pas.
Messages postés
30
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
28 septembre 2005

YES !!! Super.

C'est le dbnull.value qui fonctionne. Ce qui donne pour ceux qui chercheraient :

' />

Bon le seul inconvenient c'est qu'il faut créer une image avec le texte "Pas de logo", mais c'est pas un code moins compliqué en effet.
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
18
Si tu veux t'es pas obligé de mettre une image, mais c'est toujours plus joli avec une image je crois. Pour ne pas mettre d'image c'est simple, tu met toute la balise img dans le cas vrai et rien dans le cas false


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
Messages postés
30
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
28 septembre 2005

Non ca j'ai testé et ca ne marche pas.
Mais c'est pas grave avec l'image, c'est déjà une bonne parade.
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
18
remplace

' />

par

<%# IIF(Container.DataItem("logo_societe") is dbnull.value, "", "" ) %>

ca doit marcher


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
Messages postés
30
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
28 septembre 2005

Ok, ok pas mal on y est presque.
J'ai modifié ton code pour que ca marche voici le resultat :

<%# IIF(Container.DataItem("logo_compagnie") is dbnull.value,"" , "" ) %>

Mais temps qu'a faire, ce que je voudrais maintenant, c'est que s'il n'y a pas de logo, il m'affiche le nom de la compagnie. J'ai donc essayé le même principe comme ceci :

<%# IIF(Container.DataItem("logo_compagnie") is dbnull.value,"" , "" ) %>

Et bizarrement il ne m'affiche rien, .... J'ai même essayé plus simple :
<%# IIF(Container.DataItem("logo_compagnie") is dbnull.value,"TOTO />" , "" ) %>
Idem, TOTO ne s'affiche pas.

Alors que si je mets directement dans un ItemTemplate :
TOTO
/>

Ce code marche, ...

Y aurait-il une raison particulière ?
Messages postés
30
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
28 septembre 2005

Bon, ... ok, ... Je m'avoue vaincu, c'est toi le meilleur. Ca marche, ... lol
Pour le Label. Bah, ... parce que je ne sais pas utilisé le SPAN

Merci beaucoup.
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
18
>> http://blogs.developpeur.org/cyril/archive/2005/07/11/9104.aspx je suis sur que pleins de choses vont etre utile ;)


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr