Cet article va vous montrer comment intégrer un message de confirmation de la suppression d’un enregistrement sur un DataGrid en passant par le code Behind et un control CommandField.
Programmation > .Net
Recherche :   
Actualité Système Salon Concours Outils Programmation Devparadise Programmation HTML .Net JavaScript VBScript ASP PHP Visual Basic Perl Java Active X SQL XML WAP Delphi Graphisme Flash Web Design Promotion Référencement Publicité Valeur de votre site Outils Systèmes Windows Unix Linux Benchmark Hardware Réseaux locaux Droit Sécurité
Message de confirmation sur un DataGrid via le code Behind
  Auteur : Yves PETIT

Cet article va vous montrer comment intégrer un message de confirmation de la suppression d’un enregistrement sur un DataGrid en passant par le code Behind et un control CommandField.

Publicité 
Insertion du DataGrid et databind()

Avant toute chose nous allons mettre en place notre DataGrid. Pour cela, nous allons insérer dans la class partiel de notre page un objet «SqlDataSource» et notre chaîne de connexion à la base de données. Ici la base de données de test, est une base SQL Server Express 2005 avec une table «Tbl_Test».

private SqlDataSource MyDataSrc = new SqlDataSource();

private string MyStrCon = @"Data Source=localhost;Initial Catalog=TestDev;Persist Security Info=True;User ID=USER;Password=PASSWORD;";

Nous ne devons pas oublier de mettre notre «using» pour la connexion à SQL Server.

using System.Data.SqlClient;

Ajoutons maintenant dans le «load» de notre page la requête pour la base de données attachée à notre «SqlDataSource».

this.MyDataSrc.ConnectionString = MyStrCon;

this.MyDataSrc.SelectCommand = @"select *, CASE WHEN Valid_Test <> 0 THEN 'true' ELSE 'false' END as ValidTest  from Tbl_Test order by Nom_Test";

this.MyDataSrc.Select(new DataSourceSelectArguments());

Nous pouvons insérer le DataGrid dans notre page, en abonnant deux méthodes, une à l’événement «RowDeleting» et l’autre à l’événement «RowDataBound».

<asp:GridView ID="GrdVwCptGen" runat="server" AutoGenerateColumns="False" EmptyDataText="Il n'y a pas d'enregistrement !"

    Width="500px" CellPadding="4" ForeColor="#333333" GridLines="None" OnRowDataBound="GereGenRw"

    AllowPaging="True" OnRowDeleting="DelRw" ShowFooter="True">

    <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />

    <RowStyle BackColor="#EFF3FB" />

    <Columns>

        <asp:BoundField DataField="ID_Test" HeaderText="Identifiant" SortExpression="ID_Test"

            ReadOnly="True">

            <ItemStyle HorizontalAlign="Center" />

        </asp:BoundField>

        <asp:BoundField DataField="Nom_Test" HeaderText="Nom" SortExpression="Nom_Test">

            <ItemStyle HorizontalAlign="Center" Width="250px" />

        </asp:BoundField>

        <asp:CheckBoxField DataField="ValidTest" HeaderText="Validité">

            <ItemStyle HorizontalAlign="Center" />

        </asp:CheckBoxField>

        <asp:CommandField ButtonType="Image" CancelImageUrl="~/images/delete.png" DeleteImageUrl="~/images/delete.png"

            EditImageUrl="~/images/maj.jpg" ShowDeleteButton="True" ShowEditButton="True"

            UpdateImageUrl="~/images/check.png">

            <ItemStyle HorizontalAlign="Center" />

        </asp:CommandField>

    </Columns>

    <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />

    <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />

    <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />

    <EditRowStyle BackColor="#3399FF" />

    <AlternatingRowStyle BackColor="White" />

</asp:GridView>

Il faut maintenant lier le SqlDataSource au DataGrid dans le «load» de la page.

this.MyDtGrdVw.DataSource = this.MyDataSrc;

if (!Page.IsPostBack)

{

    this.MyDtGrdVw.DataBind();

}

Définition de «DelRw»

Cette méthode a pour but de supprimer notre enregistrement via une requête paramétrée.

protected void DelRw(object sender, GridViewDeleteEventArgs e)

{

    // Recherche de l'identifiant à supprimer

    int MyID = int.Parse(this.MyDtGrdVw.Rows[e.RowIndex].Cells[0].Text);

    // Suppression par une requête paramétré

    using (SqlConnection MyCon = new SqlConnection(MyStrCon))

    {

        // Ouverture de la connexion

        MyCon.Open();

        // Création de la commande

        using (SqlCommand MyCmd = new SqlCommand())

        {

            MyCmd.Connection = MyCon;

            MyCmd.CommandText = @"delete from Tbl_Test where ID_Test = @ID";

            MyCmd.Parameters.Add("@ID", SqlDbType.Int).Value = MyID;

            // Execution de la commande

            MyCmd.ExecuteNonQuery();

        }

        // Fermeture de la connexion

        if (MyCon.State == ConnectionState.Open)

        {

            MyCon.Close();

        }

    }

    // Refresh du DataGrid

    this.MyDtGrdVw.DataBind();

}

Création du message d’alerte

Au moment de la fin de la génération de la ligne de données, il faut affecter au contrôle de suppression un attribut «onclick» qui va nous permettre de générer un message et de poursuivre en cas de validation. Pour cela, nous créons une méthode «GereGenRw» abonné à l’événement «RowDataBound».

protected void GereGenRw(object sender, GridViewRowEventArgs e)

{

    // Détermine si la ligne est une ligne de données

    if (e.Row.RowType == DataControlRowType.DataRow)

    {

        // Récupération du bouton

        ImageButton MyImgBtn = (ImageButton)((DataControlFieldCell)e.Row.Cells[e.Row.Cells.Count - 1]).Controls[2];

        // Vérification du nom du bouton

        if (MyImgBtn.CommandName == "Delete")

        {

            // Création de la chaîne du message

            string MessageAlert = @"Voulez-vous vraiment supprimer cet enregistrement ?";

            // Création du JavaScript

            string CmdJs = string.Format(@"if (!confirm('{0}')) return;__doPostBack('{1}','{2}')"

                                        , MessageAlert

                                        , this.MyDtGrdVw.UniqueID

                                        , MyImgBtn.UniqueID);

            // Affectation du OnClick

            MyImgBtn.Attributes.Add("onclick", CmdJs);

        }

    }

}

Voilà, le message de confirmation apparaîtra au moment du click sur l’image.

A lire aussi sur Devparadise.com :
  • Comment ouvrir un pop-up après validation d’un formulaire par les contrôles d...
  • Création en VB6 d'une DLL ActiveX utilisant GDI+, et appel de cette dernière ...
  • Illustration de l’héritage de classe et de l’implémentation d’interface en c#...
  • La sérialisation (Marshaling) en XML en C# .Net 2.0
  • Création d’une DLL en C# .Net 2.0
  • A télécharger aussi sur Devparadise.com :
  • SOURCE : Message de confirmation sur un DataGrid via le code Behind
  • Comment ouvrir un pop-up après validation d’un formulaire par les contrôles d...
  • SOURCES : Création en VB6 d'une DLL ActiveX utilisant GDI+, et appel de cette...
  • Source de l'article sur l’héritage de classe et de l’implémentation
  • Code Source : sérialisation (Marshaling) en C# .Net 2.0

  • © 1997-2009 tous droits réservés Devparadise.com
    Les logos, et marques déposées sont la propriété de leurs détenteurs respectifs.
    Devparadise.com s'est engagé à respecter la confidentialité des données personnelles régies par la loi 78-17 du 6 janvier 1978.
    Déclaration C.N.I.L. n° 621623
    .net,.Net,dotnet,DOTNET,ASP .Net,C#,csharp,datagrid,DataGrid,CommandField,commandfield,message,confirmation,suppression,delete,RowDataBound,SqlDataSource,rowdatabound,sqldatasource