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

VB.NET Discussion :

aide LinQ et coloration relative


Sujet :

VB.NET

  1. #1
    Membre expérimenté Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Points : 1 461
    Points
    1 461
    Par défaut aide LinQ et coloration relative
    Bonjour,
    Dans le cadre de mon projet, j'ai dans l'idée de proposer une coloration d'un datagridview en suivant plusieurs facteurs, j'ai un combobox qui quand un item est sélectionné, va activer la coloration en relation à un élément précis (96 cases pour le moments, les valeurs qui modifie la coloration sont entrée par l'utilisateur, elles sont enregistrer dans un tableau : tab(numéro de ligne du dgv, numéro de colonne du dgv, numéro de l'information conservé))

    Première chose : Y a t'il un moyen simple (par exemple par requête linq) de grouper mes entités de tableau qui ont la même valeur en tab(,,0) et de passer en revue toute les valeurs ?

    Deuxième chose : on peut demander à une requête linq de nous rendre les deux première dimensions par rapport à une recherche sur une troisième ? c'est pas la première fois que je contourne le problème.

    Merci d'avance.

    Edit : ma question 1 et 2 peuvent se fusionner, je sais comment trouver toute les valeurs que peut prendre une colonne dans un tableau. Ce que je ne sais pas c'est comment envoyer une requête qui travaille que sur une colonne du tableau :/
    Expert en recherche google caféinomane

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,

    Au lieu d'un tableau, tu devrais utiliser une collection.

    Tu crées une classe qui représente la structure "ligne, colonne, info"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Class InfoCouleurCellule
        Public Property Ligne As Integer
        Public Property Colonne As Integer
        Public Property Info As Integer
        Sub New()
        End Sub
        Sub New(l As Integer, c As Integer, i As Integer)
            Ligne = l
            Colonne = c
            Info = i
        End Sub
    End Class
    Tu crées une collection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Private LesInfos As List(Of InfoCouleurCellule) = New List(Of InfoCouleurCellule)
    Voici un exemple pour l'alimenter et tester avec un DGV (8 colonnes et 12 lignes)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Private Sub DGVColorCell_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            For ligne As Integer = 0 To 11
                dgvCouleurCellule.Rows.Add()
                For col = 0 To 7
                    LesInfos.Add(New InfoCouleurCellule(ligne, col, (col + ligne) Mod 2))
                    dgvCouleurCellule.Rows(ligne).Cells(col).Value = (col + ligne) Mod 2
                Next
            Next
        End Sub
    La requête Linq qui filtre et la coloration des cellules qui correspondent au résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Private Sub btnCouleur_Click(sender As System.Object, e As System.EventArgs) Handles btnCouleur.Click
            For Each Uneinfo In From Infos In LesInfos Where Infos.Info = 1 Select Infos.Ligne, Infos.Colonne, Infos.Info
                dgvCouleurCellule.Rows(Uneinfo.Ligne).Cells(Uneinfo.Colonne).Style.BackColor = Color.Aqua
            Next
        End Sub
    Images attachées Images attachées  
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  3. #3
    Membre expérimenté Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Points : 1 461
    Points
    1 461
    Par défaut
    Merci beaucoup pour ta réponse.
    J'avais pensé utilisé cette méthode, ce n'est pas la première fois que je dois gérer des collections, mais c'est la première fois que je gère une collection qui a un nombre fixe d'élément.
    Le problème dans ce cas, c'est que de part mon traitement, ce qui n'était que de simples vérifications d'égalités jusque là demandera un nombre assez grand de requête linq pour obtenir le même effet :
    -Je rempli chaque case de mon dgv en sélectionnant puis appuyant sur un bouton qui m'amène à un petit formulaire
    -Une fois le formulaire terminé, je récolte toute les données non nuls, je les intègre à ma "base de donnée" et je note un marqueur sur le DGV sous la forme d'une lettre dans une chaîne de caractère. (exemple : si je rempli la case deux et quatre, sans avoir auparavant touché à la cellule, j'obtient ce texte : "-M-B-")

    Je vais me pencher sur une solution pour utiliser une liste d'objet sans avoir trop de requêtes qui partent dans tout les sens mais dans l'absolu je sens le code foireux arrivé (je me connais trop bien).
    Dernière chose : à titre culturel, il existe un moyen de faire du linq sur un tableau à plusieurs dimensions comme je le souhaitais ?
    Expert en recherche google caféinomane

  4. #4
    Membre expérimenté Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Points : 1 461
    Points
    1 461
    Par défaut
    Je passe un peu pour un gland ^^ Je suis encore intéressé par mon histoire linq + tableau mais pour mon problème, j'ai réglé, en réflechissant sans rester butté sur mon code, j'ai fait la fameuse liste de cellules que j'ai rempli, et pour accèder facilement aux données, j'ai fait une petite fonction qui si on lui donne abscisse et ordonnée nous renvoie l'objet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Function valeurs(ByVal col As Integer, ByVal lig As Integer) As Cellules
            Dim req = From a In _listedecellules Where a.colonnes = col And a.ligne = lig
            Return req(0)
        End Function
    Il suffit ensuite de modifier mes précédents : valeurs(abscisse, ordonnées, indexdedonnées) par : valeurs(abscisse, ordonnées).variable

    Tout con et mon esprit restreint n'avait pas voulu entendre cette solution u_u
    Expert en recherche google caféinomane

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

Discussions similaires

  1. Aide Projet C++(Colorer un ligne,Afficher Matrice)
    Par mabrouk1987 dans le forum C++
    Réponses: 1
    Dernier message: 20/01/2011, 01h15
  2. [HLSL XNA]aide pour algo d'ombres temps réel
    Par Acropole dans le forum XNA/Monogame
    Réponses: 3
    Dernier message: 31/07/2008, 15h49
  3. [Linq to Xml] Besoin d'aide pour une requête
    Par lutecefalco dans le forum Linq
    Réponses: 6
    Dernier message: 07/07/2008, 11h54
  4. coloration syntaxique en temps réel
    Par exhortae dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 11/01/2008, 18h52

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