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

Windows Forms Discussion :

[VB.NET][dataset][datagrid] probleme de Cast


Sujet :

Windows Forms

  1. #1
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut [VB.NET][dataset][datagrid] probleme de Cast
    Bonjour,
    J'ai un datagrid dont le datasource est un dataset.
    Je souhaiterais ajouter un spin button a mon form de maniere a ce que lorsque l'utilisateur clique sur la fleche 'haut', la ligne selectionee dans mon datagrid sera bougee d'un index vers le haut (-1 dans le dataset). Meme chose lorsque l'utilisateur clique sur la fleche 'bas'.
    Y a t-il un moyen simple de faire ca ? Ca me parait plutot difficile.

    Merci

  2. #2
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    je me reponds a moi meme
    :trouve: (enfin presque)

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Public Function MoveRow(ByVal nRow1 As Int16, ByVal eDirection As RowMove, _
                            ByRef dtData As DataTable) As Boolean
                'desc   : Move the row nRow1 of the datatable dtData into the direction 
                '         specified by eDirection
     
                Dim aRow1 As Array
                Dim aRow2 As Array
                Dim nRow2 As Int16
     
                ' If trying to move beyond the boundaries of the datatable, go no further
                If (eDirection = RowMove.MoveUp And nRow1 = 0) Or (eDirection = RowMove.MoveDown _
                    And nRow1 = dtData.Rows.Count - 1) Then
                    Return (False)
                    Exit Function
                End If
     
                ' Store the first row 
                aRow1 = dtData.Rows(nRow1).ItemArray
     
                ' Store the second row 
                nRow2 = DirectCast(IIf(eDirection = RowMove.MoveUp, nRow1 - 1, nRow1 + 1), Short)
                aRow2 = dtData.Rows(nRow2).ItemArray
     
                ' Swap the data in each row 
                dtData.Rows(nRow1).ItemArray = aRow2
                dtData.Rows(nRow2).ItemArray = aRow1
     
                Return (True)
            End Function
     
            Public Enum RowMove
                MoveUp = 0
                MoveDown = 1
            End Enum
    mais les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dtData.Rows(nRow1).ItemArray = aRow2
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dtData.Rows(nRow2).ItemArray = aRow1
    engendrent une erreur de cast car j'ai l'option Strict on.
    erreur:
    Option Strict On disallows implicit conversions from 'System.Array' to '1-dimensional array of System.Object'.

    Normalement j'utilise DirectCast pour resoudre le probleme mais la je ne vois pas quel est le type 1-dimensional array ??? Quel est le cast que je dois faire ?

    Merci

  3. #3
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    :trouve:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim aRow1() As Object
     
    dtData.Rows(nRow1).ItemArray = DirectCast(aRow2, Object())
    ca a resolu le probleme

  4. #4
    Membre habitué Avatar de del-dongo
    Inscrit en
    Mai 2003
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 147
    Points : 183
    Points
    183
    Par défaut
    oh la la bien complique tout ca, pkoi ne pas utiliser un currencyManager
    ex
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DataSet myDataSet = new DataSet("myDataSet");
    //ton code pour remplir le dataset et le mettre dans ta datagrid    
    CurrencyManager myCurrencyManager = (CurrencyManager)this.BindingContext[myDataSet, "Suppliers"];
    //tu as recupere un currency manager qui va te permettre de gérer le //déplacement dans ton dataset et ainsi impacter la sélection de ligne dans ton //datagrid (de même pour tous les controles qui seraient bindes à ton //dataset)
    myCurrencyManager.Position++;

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

Discussions similaires

  1. vb.net Aide Dataset Datagrid
    Par benradw dans le forum VB.NET
    Réponses: 2
    Dernier message: 16/05/2008, 12h26
  2. Réponses: 3
    Dernier message: 02/02/2007, 07h15
  3. [VB.NET] Deploiement / Probleme de Cast
    Par XnoTonio dans le forum Windows Forms
    Réponses: 3
    Dernier message: 02/06/2006, 14h09
  4. [vb.net][datagrid] probleme avec l'event lostfocus
    Par graphicsxp dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/10/2005, 13h24
  5. [VB.NET] DataSet - DataGrid - Cacher Colonne
    Par Seb.M dans le forum Windows Forms
    Réponses: 4
    Dernier message: 02/03/2005, 12h37

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