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 :

Comment récupérer l'index de la ligne du DataGrid ?


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 2
    Par défaut Comment récupérer l'index de la ligne du DataGrid ?
    J'ai une datagrid qui possède un ItemTemplate dans laquelle j'ai mis une DropDownList.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <asp:TemplateColumn HeaderText="Champ">
         <ItemTemplate>
             <asp:DropDownList id="DropDownListChamp" runat="server" 
              DataTextField="ChampNom" DataValueField="IDGenWhereChamp"
    	  AutoPostBack="True" SelectedIndexChanged="Test">
             </asp:DropDownList>
    	</ItemTemplate>
    </asp:TemplateColumn>
    J'ai mis AutoPostBack à cette DropDownList et je veux que lorsque l'élément de la liste est changé, la méthode "Test" soit appelée mais en sachant quelle dropdownlist de la Datagrid a été modifiée.

    Ma question est comment savoir dans la méthode "Test" quel est l'index de la ligne de la datagrid où se situe cette DropDownList.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test(ByVal sender As System.Object, ByVal e As System.EventArgs)
            'Code ...
    End Sub
    Lorsque cette méthode est appelée, les arguments "e" sont vides. Je pense qu'une solution serait de pouvoir passer des arguments à cette méthode mais comment faire ?

    Merci de votre aide

  2. #2
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    as tu mis ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <ASP:DATAGRID DataKeyNames=tacléprimaire

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 2
    Par défaut
    J'ai trouvé une solution qui marche grâce aux forums anglais ...
    Celle-ci consiste à créer une DropDownList personnalisée qui contient les attributs "CommandName" et "CommandArgument".
    L'événement sur la DropDownList personnalisée est alors récupéré par le DataGrid_ItemCommand de la datagrid, puisque celle-ci possède désormais un attribut "Command". Et dans les paramètres de cette commande, on peut récupérer le e.item.itemindex qui nous donne le numéro de la liste où se situait la dropdownlist.

    Voici le code de la DropDownList personnalisée appelée "CustomDropDownList" :
    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
    Public Class CustomDropDownList
        Inherits System.Web.UI.WebControls.DropDownList
     
        <System.ComponentModel.Bindable(False), System.ComponentModel.Category("Behavior")> _
        Public Property CommandName() As String
            Get
                Dim o As Object = ViewState("CommandName")
                If Not (o Is Nothing) Then
                    Return CType(o, String)
                End If
                Return ""
            End Get
            Set(ByVal Value As String)
                ViewState("CommandName") = Value
            End Set
        End Property
     
        <System.ComponentModel.Bindable(True), System.ComponentModel.Category("Behavior")> _
        Public Property CommandArgument() As String
            Get
                Dim o As Object = ViewState("CommandArgument")
                If Not (o Is Nothing) Then
                    Return CType(o, String)
                End If
                Return ""
            End Get
            Set(ByVal Value As String)
                ViewState("CommandArgument") = Value
            End Set
        End Property
     
        Protected Overloads Overrides Sub OnSelectedIndexChanged(ByVal e As EventArgs)
            MyBase.RaiseBubbleEvent(Me, New CommandEventArgs(Me.CommandName, Me.CommandArgument))
            MyBase.OnSelectedIndexChanged(e)
        End Sub
    End Class
    Dans la page ASPX :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <asp:TemplateColumn HeaderText="Champ">
            <ItemTemplate>
    		<cust:CustomDropDownList id="DropDownListChamp" runat="server" DataTextField="ChampNom" DataValueField="IDChamp"
     AutoPostBack="True" CommandName="MaCommande">
                     </cust:CustomDropDownList>
    	</ItemTemplate>
    </asp:TemplateColumn>
    Dans le code pour récupérer l'événement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub myDataGrid_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) 
    Handles myDataGrid.ItemCommand
            Select Case e.CommandName
                Case "MaCommande"
                    Response.Write("La dropdownlist modifiée est sur la ligne " + e.Item.ItemIndex.ToString)
            End Select
        End Sub

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

Discussions similaires

  1. Comment optimiser une lourde requête avec des index
    Par Romalafrite dans le forum Requêtes
    Réponses: 10
    Dernier message: 01/12/2006, 19h18
  2. Réponses: 12
    Dernier message: 22/05/2006, 06h18
  3. Réponses: 2
    Dernier message: 05/10/2004, 22h43

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