begin process at 2010 02 09 16:28:30
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive ASP & ASP.NET

 > 

Archives ASP & ASP.NET

 > 

ASP.net

 > 

[ASPX][VB.NET] ItemCommand vs SortCommand


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[ASPX][VB.NET] ItemCommand vs SortCommand

lundi 25 avril 2005 à 10:05:51 | [ASPX][VB.NET] ItemCommand vs SortCommand

lucie houel

Bonjour à tous et à toutes,

Voici mon problème : j'ai un datagrid qui présente des lignes triables et que l'on peut éditer, supprimer, etc... Jusqu'ici tout à fait classique.

Quand je clique sur mes entêtes de colonne, c'est l'évènement Datagrid.itemcommand plutot que Datagrid.sortcommand qui est levé (j'ai regardé avec le debuuger de visual studio ce qui s'exécute).

Après quelques tests voilà ce que j'ai pu découvrir :

dans ma fonction liée à l'évènement itemcommand, j'ai utilisé la propriété : e.Item.ItemIndex avant de faire un select case sur le e.command (contrairement à ce que je faisais dans mes autres fichiers où là je l'utilisais dans chacun de mes case) :

exemple :

Code:

' Traitement pour chaque action du datagrid déclenchée
Public Sub DG_Renvoi_ItemCommand(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DG_Renvoi.ItemCommand

dim i as integer = Convert.ToInt32(DG_Renvoi.DataKeys(e.Item.ItemIndex))

Select Case e.CommandName

Case "Edite"

' Si l'action est l'édition

...

Case "Annule"

' Si l'action est l'annulation de l'édition

...

Case "Modifie"

' Si l'action est la modification

...

Case "Supprime"

...

End Select

End Sub


dans ce cas, je n'entre pas dans la bonne fonction. Maintenant si je fais :

Code:

' Traitement pour chaque action du datagrid déclenchée
Public Sub DG_Renvoi_ItemCommand(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DG_Renvoi.ItemCommand


Select Case e.CommandName

Case "Edite"

' Si l'action est l'édition

...

Case "Annule"

' Si l'action est l'annulation de l'édition

...

Case "Modifie"

' Si l'action est la modification

dim i as integer = Convert.ToInt32(DG_Renvoi.DataKeys(e.Item.ItemIndex))

Case "Supprime"

dim i as integer = Convert.ToInt32(DG_Renvoi.DataKeys(e.Item.ItemIndex))

End Select

End Sub

Cette fois quand je clique sur l'entete des mes colonnes, c'est bien dans la fonction de tri que j'entre

Ce n'est qu'un début de réponse .... ca marche ... c'est bien, mais j'aimerais comprendre, donc si quelqu'un a une explication

Merci encore pour votre aide

lundi 25 avril 2005 à 10:49:57 | Re : [ASPX][VB.NET] ItemCommand vs SortCommand

Yopyop

Salut,

Ce serait possible de voir le code de ton datagrid (coté HTML) ?

D'habitude moi je fais:
OnDeleteCommand="dgTopics_Delete"
OnUpdateCommand="dgTopics_Update"
OnEditCommand="dgTopics_EditData"
OnCancelCommand="dgTopics_Cancel"
OnSortCommand="dgTopics_SortData"

et du côté code behind j'ai une procédure pour chaque chose...
ca m'évite d'avoir un big SELECT CASE.

yopyop
lundi 25 avril 2005 à 10:55:20 | Re : [ASPX][VB.NET] ItemCommand vs SortCommand

lucie houel


<asp:datagrid id="DG_Renvoi" runat="server" AutoGenerateColumns="False" BorderColor="#999999"
     HorizontalAlign="Center" BorderWidth="1px" CellPadding="3" GridLines="Vertical" Width="100%"
     AllowSorting="True">
     <SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="LightSkyBlue"></SelectedItemStyle>
     <AlternatingItemStyle BackColor="White"></AlternatingItemStyle>
     <ItemStyle ForeColor="Black" BackColor="#EEEEEE"></ItemStyle>
     <HeaderStyle ForeColor="White" BackColor="#3596C3"></HeaderStyle>
     <Columns>
      <asp:TemplateColumn SortExpression="dtdemande" HeaderText="Date de demande">
       <HeaderStyle Font-Bold="True" HorizontalAlign="Center" Width="10%"></HeaderStyle>
       <ItemStyle HorizontalAlign="Center"></ItemStyle>
       <ItemTemplate>
        <asp:Label id="LB_DtDemande" runat="server" Text='<%# string.format("{0:d}", DataBinder.Eval(Container, "DataItem.dtdemande")) %>'>
        </asp:Label>
       </ItemTemplate>
       <EditItemTemplate>
        <asp:Label id="LB_DtDemande_Modifie" runat="server" Text='<%# string.format("{0:d}", DataBinder.Eval(Container, "DataItem.dtdemande")) %>'>
        </asp:Label>
       </EditItemTemplate>
      </asp:TemplateColumn>
           <asp:TemplateColumn SortExpression="destinataireDm" HeaderText="Destinataire de la demande">
       <HeaderStyle Font-Bold="True" HorizontalAlign="Center" Width="20%"></HeaderStyle>
       <ItemStyle HorizontalAlign="Center"></ItemStyle>
       <ItemTemplate>
        <asp:Label id="LB_DestinataireDm" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.destinataireDm") %>'>
        </asp:Label>
       </ItemTemplate>
       <EditItemTemplate>
        <asp:Label id="LB_DestinataireDm_Modifie" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.destinataireDm") %>'>
        </asp:Label>
       </EditItemTemplate>
      </asp:TemplateColumn>
            <asp:TemplateColumn SortExpression="destinataireRv" HeaderText="Destinataire du renvoi">
       <HeaderStyle Font-Bold="True" HorizontalAlign="Center" Width="30%"></HeaderStyle>
       <ItemStyle HorizontalAlign="Center"></ItemStyle>
       <ItemTemplate>
        <asp:Label id="LB_DestinataireRv" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.destinataireRv") %>'>
        </asp:Label>
       </ItemTemplate>
       <EditItemTemplate>
        <asp:DropDownList ID="DDL_Ville" OnSelectedIndexChanged="SelectionneVille" AutoPostBack="True" runat="server"
         Width="150"></asp:DropDownList>
        <asp:DropDownList ID="DDL_Personne" enabled="False" runat="server" Width="220"></asp:DropDownList>
       </EditItemTemplate>
      </asp:TemplateColumn>
      <asp:TemplateColumn>
       <HeaderStyle HorizontalAlign="Center" Width="10%"></HeaderStyle>
       <ItemStyle HorizontalAlign="Center"></ItemStyle>
       <ItemTemplate>
        <asp:ImageButton id="IB_Edite" CommandName="Edite" runat="server" ImageUrl="../../img/edit.gif"></asp:ImageButton>
       </ItemTemplate>
       <EditItemTemplate>
        <asp:ImageButton id="IB_Modifie" CommandName="Modifie" runat="server" ImageUrl="../../img/valider.gif"></asp:ImageButton>&nbsp;
        <asp:ImageButton id="IB_Annule" CommandName="Annule" runat="server" ImageUrl="../../img/cancel.gif"></asp:ImageButton>
       </EditItemTemplate>
      </asp:TemplateColumn>
      <asp:TemplateColumn>
       <HeaderStyle HorizontalAlign="Center" Width="10%"></HeaderStyle>
       <ItemStyle HorizontalAlign="Center"></ItemStyle>
       <ItemTemplate>
        <asp:ImageButton id="IB_Supprime" CommandName="Supprime" runat="server" ImageUrl="../../img/delete.gif"></asp:ImageButton>
       </ItemTemplate>
       <EditItemTemplate>
       </EditItemTemplate>
      </asp:TemplateColumn>
     </Columns>
    </asp:datagrid>

lundi 25 avril 2005 à 11:21:03 | Re : [ASPX][VB.NET] ItemCommand vs SortCommand

Yopyop

Salut,

Pour différencier les événements de ton datagrid tu dois mettre ce que je t'ai montré
plus haut:

OnDeleteCommand="dgTopics_Delete"
OnUpdateCommand="dgTopics_Update"
OnEditCommand="dgTopics_EditData"
OnCancelCommand="dgTopics_Cancel"
OnSortCommand="dgTopics_SortData"

Cela t'évite de faire un select case... ensuite tu crées les fonctions associées:

Protected Sub dgTopics_EditData(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
Protected Sub dgTopics_Cancel(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
Protected Sub dgTopics_Update(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
Protected Sub dgTopics_Delete(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
Protected Sub dgTopics_SortData(ByVal sender As Object, ByVal e As DataGridSortCommandEventArgs)

Bon, en ce qui te concerne est-ce que ton DG_Renvoi_ItemCommand s'occupe du tri également ou est-ce que tu as une autre sub pour ca ?
Si c'est une autre, je peux la voir stp ?

merci
yopyop

lundi 25 avril 2005 à 11:41:59 | Re : [ASPX][VB.NET] ItemCommand vs SortCommand

lucie houel

il est vrai que ta méthode est plus claire, mais à priori ca ne remet pas en question la validité de la mienne ?

sinon le tri est bien géré dans une méthode :

' Permet de charger le datagrid des demandes
' se : expression de tri potentielle

 Private Sub AfficheDG(Optional ByVal se As String = "")

        ' On charge le DataView avec la variable de session contenant les demandes,
        ' avec renvoi, renvoyées par le moteur de recherche

        DV_Renvoi.Table = GDTable.InitDemandesAvecRenvoi(VarSession.Demandes)
        ' On applique le tri
        If se.Length <> 0 Then
            DV_Renvoi.Sort = se
        End If
        ' On charge le DataGrid
        DG_Renvoi.DataSource = DV_Renvoi
        DG_Renvoi.DataKeyField = "identifiant"
        DG_Renvoi.DataBind()
        DG_Renvoi.Visible = True
        TB_Renvoi.Visible = True

        Me.AfficheTitres()

End Sub


' Tri du DataGrid
Public Sub TriDemandes(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs) Handles DG_Renvoi.SortCommand
        Me.AfficheDG(e.SortExpression)
    End Sub

' Traitement pour chaque action du datagrid déclenchée
    Public Sub DG_Renvoi_ItemCommand(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DG_Renvoi.ItemCommand

       ...

    End Sub

Merci à toi

lundi 25 avril 2005 à 11:49:46 | Re : [ASPX][VB.NET] ItemCommand vs SortCommand

Yopyop

re,

est-ce que par hasard quand tu cliques sur un header (pour faire un sort), les 2 méhodes seraient exécutées ?

Genre DG_Renvoi_ItemCommand est exécuté et ensuite TriDemandes (ou l'inverse?)

yopyop
lundi 25 avril 2005 à 12:09:30 | Re : [ASPX][VB.NET] ItemCommand vs SortCommand

lucie houel

non juste : DG_Renvoi_ItemCommand
lundi 25 avril 2005 à 13:13:10 | Re : [ASPX][VB.NET] ItemCommand vs SortCommand

Yopyop

t'as fait un debug (step by tep) pour voir.

mais en fait je pense que dim i as integer = Convert.ToInt32(DG_Renvoi.DataKeys(e.Item.ItemIndex))  ne fonctionne pas car quand tu cliques sur un header le datakey doit être null (ou 0).

yopyop
lundi 25 avril 2005 à 13:24:21 | Re : [ASPX][VB.NET] ItemCommand vs SortCommand

lucie houel

oui tout à fait, j'ai bien vérifié le cheminement et il suit bien ce que j'expliquais dans mon premier message

en ce qui concerne ton explication, je pense que tu dois avoir raison, lorsqu'on clique sur un header, le datakey ou le itemindex doivent être à 0, mais ce qui m'aurait intéressé de savoir c'est pourquoi à ce moment là, c'est l'évènement ItemCommand plutot que SortCommand qui est lancé ? En fait on dirait que l'utilisation de cette ligne de commande au mauvais endroit (hors du select case j'entends) provoque une erreur dans l'évènement généré
lundi 25 avril 2005 à 13:28:24 | Re : [ASPX][VB.NET] ItemCommand vs SortCommand

Yopyop

peut-être simplement parce que les commandes update/delete ne donnent pas d'erreur lorsque tu va chercher l'id (datakey) tandis qu'en le mettant avant ton select case, il va chercher l'id alors qu'elle n'existe pas -> erreur (disfonctionnement). 

yopyop

1 2

Cette discussion est classée dans : case, action, dg, renvoi, itemcommand


Répondre à ce message

Sujets en rapport avec ce message

exeption NullReferenceException [ par melda ] Bonjour,J'aurais besoin d'une aide, après toutes mes recherches infructueuses d'autant plus que je ne sais toujours pas comment utiliser la msdn ;( Je balise form changement propriété action [ par Markus971 ] Bonjour,Je débute en ASP.NET et j'ai un petit problème : j'ai créé un formulaire de base compris dans des balises et disposant d'un bouton de type su equivalent de l'attribut "rel" de la balise <a> en HTML en Action Script 3 [ par Verdan ] J'essaie d'intégrer une vidéo dans mon site web grâce au plugin Videobox. Cependant, le lien prévu initialement se fait par l'intermédiare de la balis Comment faire un double tri dans une arraylist [ par PascalCmoa ] Bonjour à tous,Je viens de réaliser une classe qui me permet de faire un tri sur une arraylist, bon là pas de problème cela fonctionne super bien. Mai Publipostage avec case à cocher [ par bounette ] Bonne soirée,Je travail sous XPJ'ai une base de donnée en Access 2000 dans laquelle il y a des champs oui-non<?xml:names ConfirmButton pour créer des MsgBox [ par dragon ] Bonjour à tous,je suis en train de créer un MsgBox pour un site web. pour ce faire, j'utilise ConfirmButton de l'API AjaxToolkitLe popup s'affiche trè controle de case à cocher dans un frame [ par cigalou84 ] Bonjour à toutes et à tous. Débutant comme beaucoup sur VBa, je bloque sur un code qui, je pense doit être assez simple pour pas mal d'entre vous, mai Problème silverlight installation [ par hugo7 ] Bonjour voila mon problème je veux installer le plug-in de silverlight 2 pour visual studio 2008 :http://www.microsoft.com/downloads/details.aspx?Fami FindControl renvoi toujours null [ par yanis7518 ] Salut à tousJe crée des controls dynamiquement dans ma page lors du Page_Load que j'ajoute dans un PlaceHolderMyPlaceHolder.Controls.Add(new Problème de renvoi de données avec un dropdownlist [ par PascalCmoa ] Bonjour [^^happy13], Je suis en train de sécher sur un problème simple. J'ai un dropdownlist rempli au chargement de la page. Si c'est le premier ch


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales