|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : [ASPX][VB.NET] ItemCommand vs SortCommand [ Archives ASP & ASP.NET / ASP.net ] (lucie houel)
Informations & options pour cette discussion
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> <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
|
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
|
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
|
|
|
Cette discussion est classé 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
case à cocher [ par loulou ]
bonjourj'aimerais savoir comment on peut faire pour qu'une même case à cocher soit utilisée par plusieurs pages ASP?un exemple :l'utilisateur peut coc
probleme de bouton de commande [ par loulou ]
bonjourj'aimerais savoir comment on peut faire pour qu'une même case à cocher soit utilisée par plusieurs pages ASP?est ce qu'une même case à cocher p
Attribuer un action [ par websinh ]
Salut les pros, je voudrais savoir si c'est possible de donner une action sur un bouton dans un formulaire. en effet j'aimerais que quand je presse un
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|