IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[VB.NET] Mise en forme d'une datagrid suivant une valeur


Sujet :

ASP.NET

  1. #1
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut [VB.NET] Mise en forme d'une datagrid suivant une valeur
    C'est encore moi, je suis en train de chercher s'il était possible de faire une mise en forme de datagrid en fonction d'une valeur ; je m'explique : je veux afficher les interlocuteurs des sociétés clientes, seulement, il se peut que pour une raison x ou y un interlocuteur ne soit plus dans la société. Mais je veux conserver l'interlocuteur dans la table. Pour ça, j'ai ajouté une colonne 'contact' de type boolean qui "dit" si l'interlocuteur est encore dans la société ou non. Donc, si c'est vrai la ligne s'affiche normalement, sinon, elle est barrée.

    Bref, si la valeur est True le Font-Overline est à False, si c'est False le Font-Overline est à True

    Je pensais faire un truc de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    					<asp:TemplateColumn HeaderText="Nom">
    						<ItemStyle Font-Overline="<%# Not DataBinder.Eval(Container.DataItem, "Contact") %>" HorizontalAlign="Center" Width="5%"></ItemStyle>
    						<ItemTemplate>
    							<asp:Label Runat="server">
    								<%# DataBinder.Eval(Container.DataItem, "Nom") %>
    							</asp:Label>
    						</ItemTemplate>
    						<EditItemTemplate>
    							...
    						</EditItemTemplate>
    						<FooterTemplate>
    							<asp:DropDownList ID="ddlNomInsert" Runat="server"></asp:DropDownList>
    						</FooterTemplate>
    					</asp:TemplateColumn>
    Mais j'ai un message d'erreur : Le contenu littéral ('<ItemStyle Font-Overline="') n'est pas autorisé dans un 'System.Web.UI.WebControls.TemplateColumn'.

    Tout mon code est bon si je mets <ItemStyle HorizontalAlign="Center" Width="5%"></ItemStyle>

    Quelqu'un a une idée ?

    Merci

    Je suis sous VS.NET
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

    F.A.Q. : Java, PHP, (X)HTML / CSS

    N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème

  2. #2
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Dans l'ASPX :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <asp:DataGrid id="dg" runat="server">
        <Columns>
            <BoundColumn DataField="Champ1" Visible=false/>
            <BoundColumn DataField="Champ2" Visible=false/>
            <TemplateColumn>
                <ItemTemplate>
                    <asp:Label id="lbl" runat="server" onload="ChargeLabel"/>
                </ItemTemplate>
            </TemplateColumn>
        </Columns>
    </asp:DataGrid>
    Dans le CS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void ChargeLabel(object o, EventArgs e)
    {
        Label lbl=(Label)o;
        DataGridItem dgi=lbl.Parent.Parent;
        lbl.Text=dgi.Cells[0].Text;
        dgi.Style="Font-Overline="+dgi.Cells[1].Text;
    }
    C'est un peu de la bidouille mais ca marche super bien

  3. #3
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Merci de ta réponse BiMouXeTTe, je vais regarder ça et je te tiens au courant (le temps que je convertisse tout ça en VB.NET).

    Mais si quelqu'un a un truc moins bidouille je suis aussi preneur.
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

    F.A.Q. : Java, PHP, (X)HTML / CSS

    N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème

  4. #4
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Bon, raté. Voilà ce que j'ai tapé :

    Dans l'ascx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    	<Columns>
    		<asp:BoundColumn DataField="Nom" Visible="False"></asp:BoundColumn>
    		<asp:BoundColumn DataField="Contact" Visible="False"></asp:BoundColumn>
            ...
    		<asp:TemplateColumn HeaderText="Nom" ItemStyle-Width="10%">
    			<ItemTemplate>
    				<asp:Label Runat="server" OnLoad="Interlocuteurs_Barre">
    					<%# DataBinder.Eval(Container.DataItem, "Nom") %>
    				</asp:Label>
    			</ItemTemplate>
    			<EditItemTemplate>
    				<asp:TextBox ID="txtNom" Runat="server" text='<%# DataBinder.Eval(Container.DataItem, "Nom") %>'>
    				</asp:TextBox>
    			</EditItemTemplate>
    			<FooterTemplate>
    				<asp:TextBox ID="txtNomInsert" Runat="server"></asp:TextBox>
    			</FooterTemplate>
    		</asp:TemplateColumn>
    	</Columns>
    Et dans le .vb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Public Sub Interlocuteurs_Barre(ByVal o As Object, ByVal e As EventArgs)
            Dim lbl As Label = CType(o, Label)
            Dim dgi As DataGridItem = lbl.Parent.Parent
            lbl.Text = dgi.Cells(0).Text
            dgi.Style.Add("Font-OverLine", dgi.Cells(1).Text)
        End Sub
    Voilà, je ne sais pas si j'ai bien "traduit" du c# au vb.
    Je continue à chercher, mais toute aide est la bienvenue
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

    F.A.Q. : Java, PHP, (X)HTML / CSS

    N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème

  5. #5
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Ta traduction a l'air bonne, cependant dans c'est dans l'aspx et non l'ascx qu'il faut écrire.

    Autre chose, remplace OnLoad par OnPreRender

  6. #6
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    En fait, j'ai une page index.aspx dans laquelle je fait appel à des user controls : menu, interlocuteurs...

    Je ne sais pas si je fais bien , j'ai voulu faire un peu comme en php avec des include.

    Donc la manip que je souhaiterai faire est sur le user controle interlocuteurs.ascx qui est appelé dans index.aspx

    Je ne sais pas si j'ai été clair :
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

    F.A.Q. : Java, PHP, (X)HTML / CSS

    N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème

  7. #7
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    J'ai trouvé ce qu'il me fallait, finalement, j'ai conservé ton idée BiMouXeTTe mais j'ai attribué une class css pour les champs et c'est OK. Je donne le code pour ceux que ça intéressent :

    Dans le .acsx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    	<Columns>
    		<asp:BoundColumn DataField="Contact" Visible="False"></asp:BoundColumn>
    ...
    		<asp:TemplateColumn HeaderText="Nom" ItemStyle-Width="10%">
    			<ItemTemplate>
    				<asp:Label Runat="server" OnPreRender="Interlocuteurs_Barre">
    					<%# DataBinder.Eval(Container.DataItem, "Nom") %>
    				</asp:Label>
    			</ItemTemplate>
    			<EditItemTemplate>
    				<asp:TextBox ID="txtNom" Runat="server" text='<%# DataBinder.Eval(Container.DataItem, "Nom") %>'>
    				</asp:TextBox>
    			</EditItemTemplate>
    			<FooterTemplate>
    				<asp:TextBox ID="txtNomInsert" Runat="server"></asp:TextBox>
    			</FooterTemplate>
    		</asp:TemplateColumn>
    ...
    	</Columns>
    Dans le .vb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Public Sub Interlocuteurs_Barre(ByVal o As Object, ByVal e As EventArgs)
            Dim lbl As Label = CType(o, Label)
            Dim dgi As DataGridItem = lbl.Parent.Parent
            Dim barre As Boolean = Not CType(dgi.Cells(0).Text, Boolean)
            If barre Then
                lbl.CssClass = "InterlocuteurBarre"
            End If
        End Sub
    Et dans le .css :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    .InterlocuteurBarre
    {
    	text-decoration: line-through;
    }
    Et voilà, le tour est joué

    Merci à toi BiMouXeTTe pour ton idée astucieuse
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

    F.A.Q. : Java, PHP, (X)HTML / CSS

    N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème

  8. #8
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    De rien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  2. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  3. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  4. [XL-2003] afficher une cellule d'une colonne suivant sa valeur
    Par lafanchette2000 dans le forum Excel
    Réponses: 19
    Dernier message: 13/08/2009, 09h31
  5. [C#] transferer une ligne d'une datagrid vers une autre datagrid
    Par nassimmm dans le forum Windows Forms
    Réponses: 4
    Dernier message: 11/08/2006, 09h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo