Questions basiques sur url et base de données

Le
Fabaunet.
Bonjour,

Je suis en train de me former à ASP.NET 2.0 et VB.NET et je rencontre un
certain nombre de difficultés basiques je pense mais qui me bloquent

1 er problème :

Voici le code :
<asp:HyperLink ID="Site" runat="server" Text='<%# Eval("Site") %>'
NavigateUrl='<%# Eval("Site") %>' Target="_blank"></asp:HyperLink>
Le lien s'affiche bien mais renvoi à www.monadresse.com/www.monsite.com au
lieu de renvoyer à www.monsite.com
("Site" étant une donnée extraite d'une base de données)

2 eme problème :

Je me connecte à une base de données :

<asp:accessdatasource
id="AccessDataSource1"
runat="server"
datasourcemode="DataSet"
datafile="base1.mdb"
selectcommand="SELECT * FROM Table1 WHERE CODE=3">
</asp:accessdatasource>

j'affiche le résultat :

<asp:DataList
DataSourceID="AccessDataSource1"
ID="DataList1"
runat="server">
<ItemTemplate>
<asp:Label ID="Nom" runat="server" Text='<%# Eval("Nom") %>'></asp:Label>
<br />
<asp:Label ID="Fax" runat="server" Text='<%# Eval("Fax") %>'></asp:Label>
</ItemTemplate>
</asp:DataList>

Le résultat s'affiche bien, mais comment faire pour afficher "Pas de fax" si
le champ "Fax" est null ?

--
Merci d'avance
Très cordialement
Fabrice (en autoformation sur asp.net, vb.net, sql serveur, vb - en
recherche d'emploi sur Marseille)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilles TOURREAU
Le #12175771
Le Wed, 18 Jul 2007 10:37:24 +0200, Fabaunet. écrit:

Bonjour,

Je suis en train de me former à ASP.NET 2.0 et VB.NET et je rencontre un
certain nombre de difficultés basiques je pense mais qui me bloquent ...

1 er problème :

Voici le code :
<asp:HyperLink ID="Site" runat="server" Text='<%# Eval("Site") %>'
NavigateUrl='<%# Eval("Site") %>' Target="_blank"></asp:HyperLink>
Le lien s'affiche bien mais renvoi à www.monadresse.com/www.monsite.com
au
lieu de renvoyer à www.monsite.com
("Site" étant une donnée extraite d'une base de données)

2 eme problème :

Je me connecte à une base de données :

<asp:accessdatasource
id="AccessDataSource1"
runat="server"
datasourcemode="DataSet"
datafile="base1.mdb"
selectcommand="SELECT * FROM Table1 WHERE CODE=3">
</asp:accessdatasource>

j'affiche le résultat :

<asp:DataList
DataSourceID="AccessDataSource1"
ID="DataList1"
runat="server">
<ItemTemplate>
<asp:Label ID="Nom" runat="server" Text='<%# Eval("Nom") %>'></asp:Label>
<br />
<asp:Label ID="Fax" runat="server" Text='<%# Eval("Fax") %>'></asp:Label>
</ItemTemplate>
</asp:DataList>

Le résultat s'affiche bien, mais comment faire pour afficher "Pas de
fax" si
le champ "Fax" est null ?




Pour le 1er problème il faudrait nous indiquer qu'elle est la valeur
exacte de votre rubrique <%# Eval("Nom") %>

Pour le 2ème :

<%# string.IsNullOrEmpty(((LigneTypeDeDonnée)Container.Item).Fax) ? "Pas
de fax" : ((LigneTypeDeDonnée)Container.Item).Fax %>

où LigneTypeDeDonnée est le type d'une ligne de données de votre
AccessDataSource1.

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Le #12175761
Bonjour,

1) Il est préférable que le lien bindé à la propriété "NavigateUrl" soit
préfixé par "http://" sinon cela cause ce problème de concaténation.

2) En VB.Net, vous pouvez utiliser le branchement conditionnel si le champ
Fax ne renvoie jamais DBNull :

S'il renvoie DBNull dans certains cas, il vaut mieux faire une fonction protected
dans le code behind :
Protected Function GetFax(ByVal fax As Object) As String
If Not fax Is DBNull.Value AndAlso Not String.IsNullOrEmpty(Fax) Then
Return CStr(fax)
Else
Return "Pas de Fax"
End If
End Function

et l'utiliser comme ceci : <asp:Label ID="Fax" runat="server" Text='<%# GetFax(Eval("Fax"))
%>'></asp:Label>


Hope this help.

Tonio - MVP,
http://www.wygwam.com
http://blogs.developpeur.org/tonio
Fabaunet.
Le #12175741
Bonjour,

Pour le problème n°1 : n'est il pas possible de faire un test ? :
=> si les 7 premiers caractères sont "http://" alors laisser l'adresse sinon
concaténer "http://" à l'adresse ?

Impeccable pour le problème n°2 ! (j'ai utilisé la 2ème méthode, la la
première engendrant en effet des souci avec DBNULL ... de plus la méthode
n°1 comportait une petite erreur de syntaxe :
mettre :
et pas <%# IIf(String.IsNullOrEmptyEval("Fax"), "Pas de fax" , Eval("Fax"))
%>
)

Merci beaucoup !


Bonjour,

1) Il est préférable que le lien bindé à la propriété "NavigateUrl" soit
préfixé par "http://" sinon cela cause ce problème de concaténation.

2) En VB.Net, vous pouvez utiliser le branchement conditionnel si le champ
Fax ne renvoie jamais DBNull :

S'il renvoie DBNull dans certains cas, il vaut mieux faire une fonction
protected dans le code behind :
Protected Function GetFax(ByVal fax As Object) As String
If Not fax Is DBNull.Value AndAlso Not String.IsNullOrEmpty(Fax)
Then
Return CStr(fax)
Else
Return "Pas de Fax"
End If
End Function

et l'utiliser comme ceci : <asp:Label ID="Fax" runat="server" Text='<%#
GetFax(Eval("Fax")) %>'></asp:Label>


Hope this help.

Tonio - MVP,
http://www.wygwam.com
http://blogs.developpeur.org/tonio




Fabaunet.
Le #12175711
"Gilles TOURREAU"
Le Wed, 18 Jul 2007 10:37:24 +0200, Fabaunet. écrit:

Bonjour,

Je suis en train de me former à ASP.NET 2.0 et VB.NET et je rencontre un
certain nombre de difficultés basiques je pense mais qui me bloquent ...

1 er problème :

Voici le code :
<asp:HyperLink ID="Site" runat="server" Text='<%# Eval("Site") %>'
NavigateUrl='<%# Eval("Site") %>' Target="_blank"></asp:HyperLink>
Le lien s'affiche bien mais renvoi à www.monadresse.com/www.monsite.com
au
lieu de renvoyer à www.monsite.com
("Site" étant une donnée extraite d'une base de données)

2 eme problème :

Je me connecte à une base de données :

<asp:accessdatasource
id="AccessDataSource1"
runat="server"
datasourcemode="DataSet"
datafile="base1.mdb"
selectcommand="SELECT * FROM Table1 WHERE CODE=3">
</asp:accessdatasource>

j'affiche le résultat :

<asp:DataList
DataSourceID="AccessDataSource1"
ID="DataList1"
runat="server">
<ItemTemplate>
<asp:Label ID="Nom" runat="server" Text='<%# Eval("Nom") %>'></asp:Label>
<br />
<asp:Label ID="Fax" runat="server" Text='<%# Eval("Fax") %>'></asp:Label>
</ItemTemplate>
</asp:DataList>

Le résultat s'affiche bien, mais comment faire pour afficher "Pas de
fax" si
le champ "Fax" est null ?




Pour le 1er problème il faudrait nous indiquer qu'elle est la valeur
exacte de votre rubrique <%# Eval("Nom") %>

Pour le 2ème :

<%# string.IsNullOrEmpty(((LigneTypeDeDonnée)Container.Item).Fax) ? "Pas
de fax" : ((LigneTypeDeDonnée)Container.Item).Fax %>

où LigneTypeDeDonnée est le type d'une ligne de données de votre
AccessDataSource1.

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr




Merci pour cette réponse !

Pour le problème n°1 : il s'agit de la valeur retournée par la base de
données access :
Eval("Site") renvoi la valeur contenu dans le champ "Site" (exemple :
www.monsite.com)

Merci
Gilles TOURREAU
Le #12175691
Le Wed, 18 Jul 2007 14:37:32 +0200, Fabaunet. écrit:

"Gilles TOURREAU" news:

Le Wed, 18 Jul 2007 10:37:24 +0200, Fabaunet. a
écrit:

Bonjour,

Je suis en train de me former à ASP.NET 2.0 et VB.NET et je rencontre
un
certain nombre de difficultés basiques je pense mais qui me bloquent
...

1 er problème :

Voici le code :
<asp:HyperLink ID="Site" runat="server" Text='<%# Eval("Site") %>'
NavigateUrl='<%# Eval("Site") %>' Target="_blank"></asp:HyperLink>
Le lien s'affiche bien mais renvoi à www.monadresse.com/www.monsite.com
au
lieu de renvoyer à www.monsite.com
("Site" étant une donnée extraite d'une base de données)

2 eme problème :

Je me connecte à une base de données :

<asp:accessdatasource
id="AccessDataSource1"
runat="server"
datasourcemode="DataSet"
datafile="base1.mdb"
selectcommand="SELECT * FROM Table1 WHERE CODE=3">
</asp:accessdatasource>

j'affiche le résultat :

<asp:DataList
DataSourceID="AccessDataSource1"
ID="DataList1"
runat="server">
<ItemTemplate>
<asp:Label ID="Nom" runat="server" Text='<%# Eval("Nom")
%>'></asp:Label>
<br />
<asp:Label ID="Fax" runat="server" Text='<%# Eval("Fax")
%>'></asp:Label>
</ItemTemplate>
</asp:DataList>

Le résultat s'affiche bien, mais comment faire pour afficher "Pas de
fax" si
le champ "Fax" est null ?




Pour le 1er problème il faudrait nous indiquer qu'elle est la valeur
exacte de votre rubrique <%# Eval("Nom") %>

Pour le 2ème :

<%# string.IsNullOrEmpty(((LigneTypeDeDonnée)Container.Item).Fax) ? "Pas
de fax" : ((LigneTypeDeDonnée)Container.Item).Fax %>

où LigneTypeDeDonnée est le type d'une ligne de données de votre
AccessDataSource1.

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr




Merci pour cette réponse !

Pour le problème n°1 : il s'agit de la valeur retournée par la base de
données access :
Eval("Site") renvoi la valeur contenu dans le champ "Site" (exemple :
www.monsite.com)

Merci






Il faut ajouter donc "http://" devant.

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Fabaunet.
Le #12175681
"Gilles TOURREAU"
Le Wed, 18 Jul 2007 14:37:32 +0200, Fabaunet. écrit:

"Gilles TOURREAU" news:

Le Wed, 18 Jul 2007 10:37:24 +0200, Fabaunet. a
écrit:

Bonjour,

Je suis en train de me former à ASP.NET 2.0 et VB.NET et je rencontre
un
certain nombre de difficultés basiques je pense mais qui me bloquent
...

1 er problème :

Voici le code :
<asp:HyperLink ID="Site" runat="server" Text='<%# Eval("Site") %>'
NavigateUrl='<%# Eval("Site") %>' Target="_blank"></asp:HyperLink>
Le lien s'affiche bien mais renvoi à www.monadresse.com/www.monsite.com
au
lieu de renvoyer à www.monsite.com
("Site" étant une donnée extraite d'une base de données)

2 eme problème :

Je me connecte à une base de données :

<asp:accessdatasource
id="AccessDataSource1"
runat="server"
datasourcemode="DataSet"
datafile="base1.mdb"
selectcommand="SELECT * FROM Table1 WHERE CODE=3">
</asp:accessdatasource>

j'affiche le résultat :

<asp:DataList
DataSourceID="AccessDataSource1"
ID="DataList1"
runat="server">
<ItemTemplate>
<asp:Label ID="Nom" runat="server" Text='<%# Eval("Nom")
%>'></asp:Label>
<br />
<asp:Label ID="Fax" runat="server" Text='<%# Eval("Fax")
%>'></asp:Label>
</ItemTemplate>
</asp:DataList>

Le résultat s'affiche bien, mais comment faire pour afficher "Pas de
fax" si
le champ "Fax" est null ?




Pour le 1er problème il faudrait nous indiquer qu'elle est la valeur
exacte de votre rubrique <%# Eval("Nom") %>

Pour le 2ème :

<%# string.IsNullOrEmpty(((LigneTypeDeDonnée)Container.Item).Fax) ? "Pas
de fax" : ((LigneTypeDeDonnée)Container.Item).Fax %>

où LigneTypeDeDonnée est le type d'une ligne de données de votre
AccessDataSource1.

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr




Merci pour cette réponse !

Pour le problème n°1 : il s'agit de la valeur retournée par la base de
données access :
Eval("Site") renvoi la valeur contenu dans le champ "Site" (exemple :
www.monsite.com)

Merci






Il faut ajouter donc "http://" devant.

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr



Oui j'ai bien compris ça, mais je voudrais le rajouter dynamiquement si le
champ ne commence pas par "http://"

Cordialement

Fabrice
Gilles TOURREAU
Le #12175661
Le Wed, 18 Jul 2007 15:31:36 +0200, Fabaunet. écrit:


"Gilles TOURREAU" news:

Le Wed, 18 Jul 2007 14:37:32 +0200, Fabaunet. a
écrit:

"Gilles TOURREAU" news:

Le Wed, 18 Jul 2007 10:37:24 +0200, Fabaunet.
a
écrit:

Bonjour,

Je suis en train de me former à ASP.NET 2.0 et VB.NET et je rencontre
un
certain nombre de difficultés basiques je pense mais qui me bloquent
...

1 er problème :

Voici le code :
<asp:HyperLink ID="Site" runat="server" Text='<%# Eval("Site") %>'
NavigateUrl='<%# Eval("Site") %>' Target="_blank"></asp:HyperLink>
Le lien s'affiche bien mais renvoi à
www.monadresse.com/www.monsite.com
au
lieu de renvoyer à www.monsite.com
("Site" étant une donnée extraite d'une base de données)

2 eme problème :

Je me connecte à une base de données :

<asp:accessdatasource
id="AccessDataSource1"
runat="server"
datasourcemode="DataSet"
datafile="base1.mdb"
selectcommand="SELECT * FROM Table1 WHERE CODE=3">
</asp:accessdatasource>

j'affiche le résultat :

<asp:DataList
DataSourceID="AccessDataSource1"
ID="DataList1"
runat="server">
<ItemTemplate>
<asp:Label ID="Nom" runat="server" Text='<%# Eval("Nom")
%>'></asp:Label>
<br />
<asp:Label ID="Fax" runat="server" Text='<%# Eval("Fax")
%>'></asp:Label>
</ItemTemplate>
</asp:DataList>

Le résultat s'affiche bien, mais comment faire pour afficher "Pas de
fax" si
le champ "Fax" est null ?




Pour le 1er problème il faudrait nous indiquer qu'elle est la valeur
exacte de votre rubrique <%# Eval("Nom") %>

Pour le 2ème :

<%# string.IsNullOrEmpty(((LigneTypeDeDonnée)Container.Item).Fax) ?
"Pas
de fax" : ((LigneTypeDeDonnée)Container.Item).Fax %>

où LigneTypeDeDonnée est le type d'une ligne de données de votre
AccessDataSource1.

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr




Merci pour cette réponse !

Pour le problème n°1 : il s'agit de la valeur retournée par la base de
données access :
Eval("Site") renvoi la valeur contenu dans le champ "Site" (exemple :
www.monsite.com)

Merci






Il faut ajouter donc "http://" devant.

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr



Oui j'ai bien compris ça, mais je voudrais le rajouter dynamiquement si
le
champ ne commence pas par "http://"

Cordialement

Fabrice





Il faudrait mieux faire cela dans une fonction behind que vous appelez
dans le code ASP (comme pour les n° de fax)...

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Fabaunet.
Le #12175651
Je comprends ...
Merci beaucoup !


"Gilles TOURREAU"
Le Wed, 18 Jul 2007 15:31:36 +0200, Fabaunet. écrit:


"Gilles TOURREAU" news:

Le Wed, 18 Jul 2007 14:37:32 +0200, Fabaunet. a
écrit:

"Gilles TOURREAU" news:

Le Wed, 18 Jul 2007 10:37:24 +0200, Fabaunet.
a
écrit:

Bonjour,

Je suis en train de me former à ASP.NET 2.0 et VB.NET et je rencontre
un
certain nombre de difficultés basiques je pense mais qui me bloquent
...

1 er problème :

Voici le code :
<asp:HyperLink ID="Site" runat="server" Text='<%# Eval("Site") %>'
NavigateUrl='<%# Eval("Site") %>' Target="_blank"></asp:HyperLink>
Le lien s'affiche bien mais renvoi à
www.monadresse.com/www.monsite.com
au
lieu de renvoyer à www.monsite.com
("Site" étant une donnée extraite d'une base de données)

2 eme problème :

Je me connecte à une base de données :

<asp:accessdatasource
id="AccessDataSource1"
runat="server"
datasourcemode="DataSet"
datafile="base1.mdb"
selectcommand="SELECT * FROM Table1 WHERE CODE=3">
</asp:accessdatasource>

j'affiche le résultat :

<asp:DataList
DataSourceID="AccessDataSource1"
ID="DataList1"
runat="server">
<ItemTemplate>
<asp:Label ID="Nom" runat="server" Text='<%# Eval("Nom")
%>'></asp:Label>
<br />
<asp:Label ID="Fax" runat="server" Text='<%# Eval("Fax")
%>'></asp:Label>
</ItemTemplate>
</asp:DataList>

Le résultat s'affiche bien, mais comment faire pour afficher "Pas de
fax" si
le champ "Fax" est null ?




Pour le 1er problème il faudrait nous indiquer qu'elle est la valeur
exacte de votre rubrique <%# Eval("Nom") %>

Pour le 2ème :

<%# string.IsNullOrEmpty(((LigneTypeDeDonnée)Container.Item).Fax) ?
"Pas
de fax" : ((LigneTypeDeDonnée)Container.Item).Fax %>

où LigneTypeDeDonnée est le type d'une ligne de données de votre
AccessDataSource1.

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr




Merci pour cette réponse !

Pour le problème n°1 : il s'agit de la valeur retournée par la base de
données access :
Eval("Site") renvoi la valeur contenu dans le champ "Site" (exemple :
www.monsite.com)

Merci






Il faut ajouter donc "http://" devant.

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr



Oui j'ai bien compris ça, mais je voudrais le rajouter dynamiquement si
le
champ ne commence pas par "http://"

Cordialement

Fabrice





Il faudrait mieux faire cela dans une fonction behind que vous appelez
dans le code ASP (comme pour les n° de fax)...

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr


Publicité
Poster une réponse
Anonyme