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 :

Les DataKeyNames par CodeBehind


Sujet :

ASP.NET

  1. #1
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut Les DataKeyNames par CodeBehind
    Salut

    ça fait pas mal de temps que contourne ce problème en placant le GRidView côté HTML, mais là, je suis dans l'impasse, je ne peux pas faire autrement que dans le CodeBehind.
    Donc je n'arrive pas à lui placer le DataKeyNames et c'est chiant parce que je ne comprends pas le message pourtant simple qu'il me donne.

    Donc voilà le code en place :
    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
     
    Dim sdsResult As New SqlDataSource
            With sdsResult
                .ID = "sdsResult"
                .SelectCommand = "EXEC ListeMembre '" & SES_ApplicationStr & "'"
                .ConnectionString = ConfigurationManager.ConnectionStrings("DataDev").ConnectionString
            End With
            tblMilieuCentre.Controls.Add(sdsResult)
            tblMilieuCentre.Controls.Add(gvResult)
            AddHandler gvResult.SelectedIndexChanged, AddressOf RowClicked
            With gvResult
                .DataKeyNames = "UserId"
                .PageSize = 25
                .DataSourceID = "sdsResult"
                .DataBind()
            End With
    Tout marche bien, jusqu'au moment de mettre le DataKeyNames où il me dit en subtance :
    Value of type 'String' cannot be converted to '1-dimensional array of String'.
    Désolé, le message est en anglais parce que j'ai installé un VS en anglais ! ! Donc LuteceFalco, Tomlev et Poulain, pas de grosse marade s'il vous plait !

    En tout cas, je n'arrive pas à comprendre comment il veux que je lui file le nom du champ qui va servir de DataKey.
    Vous pouvez m'aider ?

  2. #2
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Citation Envoyé par msdn
    Obtient ou définit un tableau qui contient les noms des champs clés primaires pour les éléments affichés dans un contrôle GridView.
    Tu essayes d'affecter une chaine la ou il attends un tableau...

    Essayes qq chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     Dim keys As New List(Of String)
     keys.Add("UserId")
     With gvResult
                .DataKeyNames = keys.ToArray()
    Ps : code tapé d'une main avec une schtroumpfette sur les genoux, peut contenir des erreurs embarassantes

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  3. #3
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    OK, merci, merci beaucoup Philippe.

    Le coup du tableau, j'avais capté depuis le départ, c'est la mnière de faire que j'arrivais pas à comprendre. Tous les trucs du genre List(of... j'ai un peu de mal avec ça encore.


    Alors un poutou sur le front pour toi et un grand merci à la schtroumphette..... ou l'inverse !

  4. #4
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Citation Envoyé par zooffy Voir le message
    Alors un poutou sur le front pour toi et un grand merci à la schtroumphette..... ou l'inverse !
    Oh oui, un bisou, un bisou, un bisou

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  5. #5
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Je relance le topic aprce que j'ai à nouveau le même problème alors que je fais top bien comme tu m'a dis.
    Sauf que là, je suis dans un autre composant, mais sinon c'est la même chose.

    Tu pourrais me dire si tu vois une erreur sur laquelle je bloque depuis ce matin ?

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
     
     
    Partial Class Module_Meet_ListeMembre
        Inherits System.Web.UI.UserControl
     
        Private _Deco As String
        Private _IdListeMembre As Int16
        Private gvListe As New GridView
        Private dtGeneralite As DataTable
     
        Public Property Deco() As String
            Get
                Return _Deco
            End Get
            Set(ByVal value As String)
                _Deco = value
            End Set
        End Property
     
        Public Property IdListeMembre() As Int16
            Get
                Return _IdListeMembre
            End Get
            Set(ByVal value As Int16)
                _IdListeMembre = value
            End Set
        End Property
     
        Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
            AppliquerDeco(Deco, tblCentral)
            dtGeneralite = New DManager("DataDev").RetournerTable("EXEC MEET_ListeMembreGeneralite '" & Session("SES_ApplicationStr") & "'," & IdListeMembre)
            Dim sdsListe As New SqlDataSource
            tblMilieuCentre.Controls.Add(sdsListe)
            tblMilieuCentre.Controls.Add(gvListe)
            AddHandler gvListe.SelectedIndexChanged, AddressOf RowClicked
            With sdsListe
                .ID = "sdsListe"
                .SelectCommand = "EXEC MEET_ListeMembreData '" & Session("SES_ApplicationStr") & "'"
                .ConnectionString = ConfigurationManager.ConnectionStrings("DataDev").ConnectionString
            End With
            With gvListe
                Dim keys As New System.Collections.Generic.List(Of String)
                keys.Add(dtGeneralite.Rows(0).Item("DataKey"))
                .DataKeyNames = keys.ToArray()
                .DataSourceID = "sdsListe"
                .AutoGenerateColumns = False
                .Width = Unit.Percentage(100)
                If dtGeneralite.Rows(0).Item("Pager") = 1 Then
                    .AllowPaging = True
                    .PageSize = dtGeneralite.Rows(0).Item("NbPage")
                    With .PagerSettings
                        .Mode = PagerButtons.NextPreviousFirstLast
                        .FirstPageText = "Première"
                        .LastPageText = "Dernière"
                        .NextPageText = "Suivante"
                        .PreviousPageText = "Précédente"
                    End With
                Else
                    .AllowPaging = False
                End If
                .DataBind()
            End With
     
            AjouterColone(gvListe)
     
        End Sub
     
        Sub AjouterColone(ByVal gv As GridView)
            Dim dtDefColone As DataTable = New DManager("DataDev").RetournerTable("EXEC MEET_ListeMembreDefColone " & IdListeMembre)
            For Each dr As DataRow In dtDefColone.Rows
                Select Case dr.Item("TypeColone")
                    Case "Text"
                        Dim bf As New BoundField
                        With bf
                            .HeaderText = dr.Item("NomColone")
                            .DataField = dr.Item("DataColone")
                        End With
                        gv.Columns.Add(bf)
                    Case "Image"
                        Dim imf As New ImageField
     
                        With imf
                            .HeaderText = dr.Item("NomColone")
                            .DataImageUrlFormatString = RetournerUrlPhotoMembre(dr.Item("DataColone"), 1)
                            .ItemStyle.Width = Unit.Pixel(dr.Item("ParamNum1"))
                        End With
     
                        gv.Columns.Add(imf)
                    Case Else
                        Dim bf As New BoundField
                        With bf
                            .HeaderText = ""
                            .ItemStyle.Width = Unit.Pixel(0)
                        End With
                        gv.Columns.Add(bf)
                End Select
            Next
        End Sub
     
        Function RetournerUrlPhotoMembre(ByVal UserIdPhoto As String, ByVal NumPhoto As Int16) As String
            Dim BaseChemin As String = "/App_Themes/" & Session("SES_Nomsite") & "/PhotoMembre/"
            Dim PhotoChemin As String = UserIdPhoto & "ph" & NumPhoto & ".jpg"
            If File.Exists(BaseChemin & PhotoChemin) Then
                Return BaseChemin & PhotoChemin
            Else
                Return BaseChemin & "NoPhoto.jpg"
            End If
        End Function
     
        Sub RowClicked(ByVal sender As Object, ByVal e As System.EventArgs)
            Dim gv As GridView = sender
            Response.Redirect(GetPage(dtGeneralite.Rows(0).Item("PageDestination"), enTypeRetour.Lien) & "&iduser=" & gv.DataKeys(0).Value.ToString)
        End Sub
     
        Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
            For Each r As GridViewRow In gvListe.Rows
                If r.RowType = DataControlRowType.DataRow Then
                    r.Attributes("OnClick") = Me.Page.ClientScript.GetPostBackEventReference(gvListe, "Select$" & r.RowIndex, True)
                    r.Style("cursor") = "hand"
                End If
            Next
            MyBase.Render(writer)
        End Sub
    End Class

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/04/2011, 14h50
  2. [HTTP] Comment utiliser les POST par programation
    Par Popof dans le forum Général Conception Web
    Réponses: 9
    Dernier message: 31/01/2005, 09h14
  3. [BP]Borland Pascal : modifier les couleurs par défaut.
    Par Pipoland dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 12/10/2004, 21h32

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