begin process at 2012 05 27 23:31:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

ASP.NET

 > 

WebForms

 > 

Autre

 > 

Formatage de string dans datalist


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Formatage de string dans datalist

lundi 24 juillet 2006 à 23:05:46 | Formatage de string dans datalist

mdemo

Bonjour,

C'est du classique, mais je n'y arrive pas...
Je souhaite simplement limiter la longueur d'un label situé dans un datalist. Au-delà d'une certaine longueur je veux limiter la chaine et ajouter "..."
Voici ce que j'ai fait:

<

asp:LabelID="PLabel"runat="server"Text='<%# IIf(Eval("PName").Length>4,Eval("PName").substring(0,4)&"...",Eval("PName")) %>'</asp:Label>

Le problème est que ça plante au niveau du Length si la chaine est nulle. (sinon ça marche sans pb).

Comment faire sans rajouter un iif pour vérifier la chaine nulle ? N'y-t-il pas une meilleure solution ?

Merci d'avance pour votre aide.
lundi 24 juillet 2006 à 23:51:08 | Re : Formatage de string dans datalist

jesusonline

Membre Club Administrateur CodeS-SourceS
Bonsoir

IIF((Eval("PName") & string.empty).length >4, "toto" , "tutu" ) ?

Fonctionnera sauf si Eval("PName") == DBNULL dans ce cas

IIF( PName = DBNull.value, "rien", IIF((Eval("PName") & string.empty).length >4, "toto" , "tutu" )  )


Cyril - MVS - MCP
lundi 24 juillet 2006 à 23:53:57 | Re : Formatage de string dans datalist

jesusonline

Membre Club Administrateur CodeS-SourceS

J'oublie tu peux aussi passer par l'evenement databound de ton codebehind et récuperer le label grace au paramètre e de l'évenement

Label lbl = (Label)e.Item.FindControl("tonlabel");


Cyril - MVS - MCP
mardi 25 juillet 2006 à 10:25:24 | Re : Formatage de string dans datalist

mdemo

Merci Cyril pour ton aide... mais je ne m'en sors toujours pas.

La nuit a porté conseil et je me suis rendu compte que le problème n'est pas au niveau lu length de la chaine (je m'excuse pour cette mauvaise analyse du problème)

En effet sauf erreur Eval("PName") marchera même si PName est DBNull, et le résultat sera un string.empty (par ailleurs un test sur PName==DBNull.value ne marche pas car PName n'est pas reconnu)

Bref j'ai quand même fait des modifs comme suit (le premier IIf me semble donc inutile désormais):

IIf(Eval("PName")=string.empty, "no",IIf((Eval("PName")& string.empty).length>10,Eval("PName").substring(0,9) & "...",Eval("PName")))

L'erreur est toujours la même : Index and length must refer to a location within the string.
Parameter name: length


En fait tout marche bien si j'enlève le substring. C'est ce que j'avais vu dès le début et c'est pourquoi je fais ce test sur la longueur.
Dans le cadre de mon test les chaines sont soit nulles, soit d'environ 15 à 30.

As-tu une idée ?

Peux-tu m'expliquer pourquoi tu rajoutes un string.empty pour évaluer la longueur ?

Merci d'avance.


mercredi 26 juillet 2006 à 10:42:34 | Re : Formatage de string dans datalist

Yopyop

salut,

ajouter string.empty fait que ta string n'est jamais nulle (null + "" = string non nulle), donc le length fonctionne

essaies

<%# IIf((Eval("PName") & String.Empty).Length>10, (Eval("PName") & String.Empty).substring(0,9) & "...", Eval("PName")) %>

si ca ne fonctionne pas essaies (par curiosité)

<%# IIf((Eval("PName") & String.Empty).Length>10, (Eval("PName") & String.Empty).substring(0,8) & "...", Eval("PName")) %>

yopyop

mercredi 26 juillet 2006 à 22:55:38 | Re : Formatage de string dans datalist

mdemo

Merci pour ton aide Yopyop, mais ça ne marche pas même en allant jusqu'à (0,1).

J'ai enfin trouvé une solution qui fonctionne, mais je suis toujours curieux de comprendre pourquoi celle-ci ne marche pas.

Voici une solution:

<asp:LabelID="PNameLabel"runat="server"Text='<%# FilterString(eval("PName"))%>'Width="100px"Height="30px"SkinID="LblSmall"></asp:Label>

Et un bout de code pour faire le boulot:

Protected

Function FilterString(ByVal Toto AsString) AsString

Dim strBuilder = New StringBuilder()

strBuilder.Insert(0, Toto)

If (strBuilder.Length > 18) Then

Return strBuilder.ToString().Substring(0, 18) & "..."

Else

Return strBuilder.ToString()

EndIf

EndFunction

Ca permet de contourner l'obstacle, mais j'aurais aimé faire plus simple avec la première solution.

Encore merci, et tiens moi au courant si tu trouves quelque chose
jeudi 27 juillet 2006 à 01:06:12 | Re : Formatage de string dans datalist

Yopyop

personnellement,
je trouve que passer par une fonction est beaucoup plus propre...
et il serait encore plus propre de passer par l'événement ItemDatabound de la datagrid comme l'a suggéré jesus

yopyop
jeudi 27 juillet 2006 à 10:29:18 | Re : Formatage de string dans datalist

mael974

salut
jai eu la solution anotre pbl mdemo sur le forum vois mon msg :
http://www.aspfr.com/infomsg.aspx?ID=784894

merci a ts les developpeurs...... c'est que du bonheur ce forum...on apprend ts les jrs !!!!
une simple fonction sql substring suffit a reglé notre pbl ......enjoy


=> MaEl <=
jeudi 27 juillet 2006 à 11:09:07 | Re : Formatage de string dans datalist

Yopyop

bein si tu veux une solution sql tu peux également utiliser

left(champs_nom,longueur)
et si tu veux tester si ta valeur est NULL tu utilise coalesce

SELECT COALESCE(left(champs,longueur),"CETTE VALEURE EST NULLE") from ....

yopyop



Cette discussion est classée dans : string, chaine, limiter, datalist, formatage


Répondre à ce message

Sujets en rapport avec ce message

web.config + clef de connection ! [ par jimmy69 ] Bonjour a tous,Je fais des webform avec c# visual studio 2003 !et je me connecte a une db msde !avant je placais ma chaine dans une chaine de type str Fonction qui peut retourner un string ou un int. ??? [ par DiJiTooL ] Bonjour,Je voulais créer une fonction en asp.net C#  afin d'exécuter des requêtes dans une base de donnée oracle cependant le type de retour peut très Limiter les droits d'écriture [ par audugui ] Bonjour,Je suis en train de créer un site web pour recueillir des données de plusieurs répondants.J'ai 4 catégories (pour le moment) avec un rôle par chaine de connexion entre asp et sql server [ par mary_tssi ] je veux une petite exemple :chaine de connexion pour connecter le code asp et la base de données sql servermerci d'avance Procedure qui a trop d'arguments specifiés [ par bootchoz ] Salut a vous ! J'obtiens ce message d'erreur :Procedure or function InsertRole has too many arguments specifiedvoila une partie de mon Récupérer les valeurs stocker dans un datalist [ par Coolpix08 ] Voila j'ai vu que les valeurs passer à un datalist ou datagrid son donnée via le datasource.et que ces donnée perdure apres chaque postback grâce au s [VB.Net] Repeater , contenu dynamique [ par Dyr3e ] bonjour, j'ai creer un repeater, contenant sur chaque ligne 2 champs. l'un est un label, et le 2 doit etre dynamique et fonction du type de données pr Label1.Text="Ma Chaine" [ par 24 ans ] Salut tout le monde.j'ai ajouter le Master page à mon application,et dans son entete j ai placer un label . je voudrais que lorsque une page est charg Créer des colonne dynamiquement dans datalist? [ par Coolpix08 ] Bonjour,  J'aimerais savoir si il y a une méthode simple pour créer des colonnes dynamiquement dans un datalist a partir du code behing.Car pour le mo Conversion formule => valeur décimale [ par flagadda ] Bonjour,Je souhaiterais transformer une formule contenu dans un string en sa valeur en decimal.Par exemple :<div class="smallfont"


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,374 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales