begin process at 2012 05 27 20:55:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

ASP.NET

 > 

Base de données

 > 

SQL Server

 > 

Datagrid OnItemCommand HELP !


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

Datagrid OnItemCommand HELP !

jeudi 18 décembre 2008 à 16:53:07 | Datagrid OnItemCommand HELP !

lamagnifik

Bonjour tout le monde,

je suis à bout avec mon datagrid et j'ai vraiment besoin de votre aide !
Je souhaite mettre à jour les données contenues dans mon datagrid à travers l'évènement OnItemCommand
Pour celà j'ai utilisé un templateColumn dans lequel j'ai 2 imageButton pour editer et supprimer l'enregistrement (j'ai utilisé la propriété commandName).
En mode édition (après un click sur le boutton éditer) 2 autres imageButton apparaissent pour valider ou suprimmer la mise à jour mais qui ne marchent pas.
Dans mon code la suppresion marche l'édition aussi mais les bouton de validation et d'annulation de la mise à jour ne marche pas : rien ne se passe. Je suis désespéré ! 

Cependant les évenements associés aux buttons "_btnUpdateCnslt" et "_btnCancelCnslt" ne marchent pas : rien ne se produit !!
Merci d'avance pour vos commentaires.
 
ci dessous mon datagrid :

<asp:DataGridid="_consultantDtGrid"runat="server"HorizontalAlign="Center"

                  BorderWidth="1px"BorderColor="#5190b2"BorderStyle="Solid"

                  AutoGenerateColumns="False"Visible="false"Width="99%"

                  AlternatingItemStyle-BackColor="#e3e6d4"

                   OnItemCommand="_consultantDtGrid_ItemCommand">

      <Columns>

               <asp:BoundColumnDataField="id_consultant"Visible="false"

                                 HeaderText="#"HeaderStyle-CssClass="dataHead"

                                 ItemStyle-CssClass="centerLowercaseItem">

              </asp:BoundColumn>

              <asp:BoundColumnDataField="c_name"

                                    HeaderText="Name"HeaderStyle-CssClass="dataHead"

                                    ItemStyle-CssClass="leftLowercaseItem">

              </asp:BoundColumn>

              <asp:TemplateColumnHeaderStyle-CssClass="dataHead"HeaderText="Actions"

                                     ItemStyle-CssClass="centerLowercaseItem">

                        <ItemTemplate>

                                    <asp:ImageButtonID="_btnEditCnslt"runat="server"

                                                  ToolTip="Edit this row"

                                                   ImageUrl="~/images/icons/modifier.png"CssClass="dgButton"

                                                   CommandName="editCnslt"/>

                                    <asp:ImageButtonID="_btnDeleteCnslt"runat="server"

                                                   ToolTip="Delete this row"

                                                   ImageUrl="~/images/icons/cross.gif"CssClass="dgButton"

                                                   OnClientClick="return Delete()"

                                                   CommandName="deleteCnslt"/>

                        </ItemTemplate>

                       <EditItemTemplate>

                                    <asp:ImageButtonID="_btnUpdateCnslt"runat="server"

                                                   ToolTip="Valid changes"

                                                   ImageUrl="~/images/icons/tick.gif"CssClass="dgButton"

                                                   CommandName="updateCnslt"/>

                                    <asp:ImageButtonID="_btnCancelCnslt"runat="server"

                                                   ToolTip="Cancel changes"

                                                   ImageUrl="~/images/icons/cross.gif"CssClass="dgButton"

                                                   Width="14px"Height="14px"

                                                   CommandName="cancelCnslt"/>

                        </EditItemTemplate>

      </asp:TemplateColumn>

</Columns>

</asp:DataGrid>



Et mon code C# :



if (e.CommandName == "editCnslt")

{

         _consultantDtGrid.EditItemIndex = e.Item.ItemIndex;

         _consultantDtGrid.EditItemIndex = 0;

         _error_message.InnerText = e.Item.Cells[0].Text +

" - " + e.Item.Cells[1].Text;

         LoadConsultantTable();

}

elseif (e.CommandName == "updateCnslt")

{

         // Connexion à la BD

         DataBaseConnection C = newDataBaseConnection();

         // Exécution de la requete

         String query = "UPDATE FROM consultant WHERE id_consultant = " + e.Item.Cells[0].Text +

         " SET c_name = '" + e.Item.Cells[1].Text + "'";

         C.ExecuteQuery(query);

         _error_message.InnerText = e.Item.Cells[0].Text +

" - " + e.Item.Cells[1].Text; // Affiche la requete

}

elseif (e.CommandName == "cancelCnslt")

{

         _consultantDtGrid.EditItemIndex = -1;

         LoadConsultantTable();

}

elseif (e.CommandName == "deleteCnslt")

{

         // Connexion à la BD

         DataBaseConnection C = newDataBaseConnection();

         // Exécution de la requete

         C.ExecuteQuery(

"DELETE FROM consultant WHERE id_consultant =" + e.Item.Cells[0].Text);

        _consultantDtGrid.EditItemIndex = -1;

         LoadConsultantTable();

}

vendredi 19 décembre 2008 à 09:59:13 | Re : Datagrid OnItemCommand HELP !

nhervagault

Administrateur CodeS-SourceS
Salut,

Voila comment je fais.

C'est beaucoup plus propre (découapge par couche)
C'est des extraits de code bien sur.

Je pense que le probleme vient que tu ne fermes pas les connexions.

------------------------------------------------

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {

PersonnHelper helper = new PersonnHelper();

Personn personne = new Personn;
if (e.CommandName == "Delete")
        {
            personne.Id = Convert.ToInt64(e.CommandArgument);
            helper.SupprimerPersonn(filtre);
        }

 if (e.CommandName == "Update")
{
                personne.Id = Convert.ToInt64(e.CommandArgument);
                personne.Nom = (GridView1.Rows[GridView1.EditIndex].FindControl("txtNom") as TextBox).Text;
                personne.Prenom = (GridView1.Rows[GridView1.EditIndex].FindControl("txtPrenom") as TextBox).Text;
helper.ModifierPersonn(personne);
            }
//refresh Data
FillData();
}

--------------------------------------------------------------

Dans l'ASPX j'ai
  <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True" CommandName="Update"
                        CommandArgument= '<%# Bind("Id") %>' >
    <asp:Image ID="Image3" runat="server" ImageUrl="~/images/save.png" AlternateText="Mise à Jour" />
                        </asp:LinkButton>

----------------------------------------------------------------
Dans le helper
j'ai par exemple

    public virtual void Supprimer(Personn personn)
        {
const string SQL = @"DELETE FROM [dbo].[personne]
                                WHERE personn.id = @id";
            try
            {
                cmd = new Command;
                cmd.CommandText = SQL;
                cmd["@id"] = personn.Id;
                cmd.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                  //log
            } 
            finally
            {
                    cmd.CloseConnection();
            }




vendredi 19 décembre 2008 à 10:29:21 | Re : Datagrid OnItemCommand HELP !

lamagnifik

Bonjour,

Je te remerci de m'avoir répondu.
J'ai vérifier mon code et je ferme bien mes connexions.
Mais sinon tu n'as rien vu d'anormal dans mon code en dehors de cette histoire de connexion ?
J'utilise un datagrid et je vois que tu as utilisé un gridView donc je vais essayer d'adater mon code à un gridView pour voir on ne sait jamais.

Ci dessous ma fonction  ExecuteQuery

/// <summary>

/// To execute an SQL Query

/// </summary>

/// <param name="query"> SQL Query </param>

public void ExecuteQuery( String query)

{

// SQL query

//String query = " INSERT INTO " + table + " FROM " + tableName + " ORDER BY " + orderby;

// Establish the connection

myConnection = openDb();

/**** Database treatments ****/

DataTable mytable = new DataTable ();

SqlDataAdapter myAdptater = new SqlDataAdapter (query, myConnection);

myAdptater.Fill(mytable);

// Close the connection

closeDb();

}

 

vendredi 19 décembre 2008 à 11:00:58 | Re : Datagrid OnItemCommand HELP !

lamagnifik

Réponse acceptée !

Coucou
ça y'est j'ai trouvé où était le problème !!! et j'ai honte là !
Comment ne l'ai-je pas vu plutôt ???
Il fallait juste mettre le code correspondant au remplissage de mon Datagrid au chargement de la page donc dans le Page_Load (je sais c'est EVIDENT il me fallait juste ouvrir les yeux)et sans oublier le  if (!IsPostBack) 
moi je l'avais mis dans le OnInit...
Dans tous les cas merci d'avoir réagi à ma demande d'aide.

vendredi 19 décembre 2008 à 19:06:00 | Re : Datagrid OnItemCommand HELP !

nhervagault

Administrateur CodeS-SourceS
Ok,

Ca va peut etre mieux structurer ta programmation, si tu appliques ma façon de programmer.


Cette discussion est classée dans : asp, item, cells, cssclass, commandname


Répondre à ce message

Sujets en rapport avec ce message

Récupérer name id et value d'un <option> en ASP [ par ypikai ] Bonjour,Alors voilà j'ai un code html qui ressemble à ça : <option id=0 name=1 value="toto1"& Template Field en code behind [ par zigxag ] Bonjour !Je voudrais écrire ceci (ASP.net 2) en code behind C# 2, mais je trouve pas comment faire. Comment ajouter un templatefield à un gridview en Remplacer les boutons Edit, Update, Cancel par des boutons graphiques [ par martok ] Bonjour tout le monde, C'est un peu long, mais j'ai essayé d'être le plus clair possible ... Je cherche à remplacer un boutons Edit, Update, Cancel p [C# & ASP.NET] SelectedIndex et Pagination [ par piqi89 ] Bonjour, mon probleme est simple : un datagrid, une pagination qui marche, mais une question : Comment recuperer l'item selectionné page 2 ( pour la 1 CS0123: No overload for 'OK_Click' matches delegate 'System.EventHandler' [ par bootchoz ] salut,ce message d'erreur apparait : CS0123: No overload for 'OK_Click' matches delegate 'System.EventHandler' lorsque je compile.voila mon code de ma Image Button [ par elpens ] Bonjour, Je suis actuellement bloqué et je recherche un peu d'aide.Voilà:J'ai un gridView lié avec une db qui m'affiche des alertes. J'aimerais que qu PostBack event Repeater [ par premiumbfd ] Bonjour,J'ai un petit souci au niveau de l'événement ItemCommand d'un Repeater ASP.NET : Au départ, il m'affichait l'erreur 'Invalid post ModalPopupExtender et UpdatePanel [ par filip24 ] Bonjour,Bon au lieu de faire un long discours je vous montre mon message d'erreur : An extender can't be in a different UpdatePanel than the control i CollapsiblePanelExtender [ par necnec ] Bonjour a tous,J'ai un collapsiblePannelExtender dans un datalist mais je n'arrive pas a géré mes envenement rpt_home_ItemCommand2 en code behind aucu Pb avec utilisation du Profile d'ASP.NET 2 [ par pepi_7 ] Salut à tous,J'ai un petit problème lorsque je veux utiliser le Profile dans mon site ASP.NET 2.0.J'ai défini une propriété dans le fichier web.config


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,764 sec (4)

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