Modification et suppression d'enregistrement dans une base de données

Soyez le premier à donner votre avis sur cette source.

Vue 16 169 fois - Téléchargée 1 105 fois

Description

Cette portion de code vous permettra d'interagir avec la base de données (UPDATE et DELETE) via un contrôle DATAGRID

Source / Exemple :


<%@ Page Language="VB" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>

<script runat="server">
	' On définit la connection
   	Dim Conn As New OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & Server.MapPath("\testnet\test.mdb"))
   
   	sub Page_Load(obj as Object, e as EventArgs) 
		if Not Page.IsPostBack then
			FillDataGrid()
      	end if
   	end sub
   
	sub dgData_Edit(obj as object, e as DataGridCommandEventArgs)
      	FillDataGrid(e.Item.ItemIndex)
   	end sub
    
   	sub dgData_Delete(obj as object, e as DataGridCommandEventArgs)
      	dim strSQL as string = "DELETE FROM CLIENT WHERE CL_ID = " & Ctype(e.Item.Cells(0).Controls(1), Label).Text
	  
	  	ExecuteStatement(strSQL)
       
      	FillDataGrid()
   	end sub
    
   	sub dgData_Update(obj as object, e as DataGridCommandEventArgs)
      	if UpdateDataStore(e) then
         	FillDataGrid(-1)
      	end if
   	end sub
   
   	sub dgData_Cancel(obj as object, e as DataGridCommandEventArgs)
      	FillDataGrid(-1)
   	end sub
    
   	function UpdateDataStore(e as DataGridCommandEventArgs) as boolean
       
      dim i,j as integer
      dim tabUpdate(1) as string
      dim strText as string
      dim blnGo as boolean = true
      
      j = 0
      
      ' -3 pour ne pas compter les colonnes EDITION et SUPPRESSION
	  for i = 1 to e.Item.Cells.Count - 3
         strText = Ctype(e.Item.Cells(i).Controls(0), TextBox).Text
         
		 ' Combien de colonnes : e.Item.Cells.Count
		 ' 9 cellules : ID, nom, etc...suppression
		 
		 
		 if strText <> "" then
			tabUpdate(j) = strText
            j = j + 1
         else
            blnGo = false
            lblMessage.Text = "Veuillez renseigner tous les champs svp"
         end if
      next
      
      if not blnGo then
         return false
         exit function
      end if
       
      dim strSQL as string = "UPDATE CLIENT SET " & _
         "CL_NOM = '" & tabUpdate(0) & "'," & _
         "CL_VILLE = '" & tabUpdate(1) & "'" & _
         " WHERE CL_ID = " & Ctype(e.Item.Cells(0).Controls(1), Label).text

      	ExecuteStatement(strSQL)
      return blnGo
   end function
    
   sub FillDataGrid(Optional EditIndex as integer=-1)
      'Ouverture de la connexion
      dim objCmd as new OleDbCommand ("select * from CLIENT", Conn)
      dim objReader as OleDbDataReader
      
      try
         objCmd.Connection.Open()
         objReader = objCmd.ExecuteReader()
      catch ex as Exception
         lblMessage.Text = "Liaison avec la base de données erronée"
      end try
      
      dgData.DataSource = objReader
      if not EditIndex.Equals(Nothing) then
         dgData.EditItemIndex = EditIndex
      end if
      
      dgData.DataBind()
       
      objReader.Close
      objCmd.Connection.Close()
       
   end sub
    
   function ExecuteStatement(strSQL) 
      dim objCmd as new OleDbCommand(strSQL, Conn)
      
      try
         objCmd.Connection.Open()
         objCmd.ExecuteNonQuery()
      catch ex as Exception
		lblMessage.Text = "Erreur lors de la mise à jour des données"
      end try
      
      objCmd.Connection.Close()
   end function
</script>

<html>
<body>
	<asp:Label id="lblMessage" runat="server"/>
   	
	<form runat="server">
		<asp:DataGrid id="dgData" runat="server"
        	BorderColor="black"
            GridLines="Vertical"
            cellpadding="4"
            cellspacing="0"
            width="450"
            Font-Names="Arial"
            Font-Size="8pt"
            ShowFooter="True"
            HeaderStyle-BackColor="#CCCCCC"
            FooterStyle-BackColor="#CCCCCC"
            ItemStyle-BackColor="#ffffff"
            AlternatingItemStyle-Backcolor="#cccccc"
            AutoGenerateColumns="False"
			OnDeleteCommand="dgData_Delete"
         	OnEditCommand="dgData_Edit"
         	OnCancelCommand="dgData_Cancel"
         	OnUpdateCommand="dgData_Update">

         	<Columns>
            	<asp:TemplateColumn HeaderText="ID">
              		<ItemTemplate>
                 		<asp:Label id="Id" runat="server" Text='<%# Container.DataItem("CL_ID") %>'/>
              		</ItemTemplate>
            	</asp:TemplateColumn>
            
            	<asp:BoundColumn HeaderText="Nom" DataField="CL_NOM" />
            	<asp:BoundColumn HeaderText="Ville" DataField="CL_VILLE"/>
            
            	<asp:EditCommandColumn
               		EditText="Edition"
               		CancelText="Annuler"
               		UpdateText="Mise à jour"
               		HeaderText="Edition"/>
            
            	<asp:ButtonColumn HeaderText="Suppression" text="Supprimer" CommandName="delete" />
         	</Columns>
		</asp:DataGrid>
   </form>
</body>
</html>

Conclusion :


Bonne programmation

A+

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
mardi 16 novembre 2010
Statut
Membre
Dernière intervention
12 avril 2012

trés bien mais update ne marche pas
Messages postés
3
Date d'inscription
mercredi 3 septembre 2003
Statut
Membre
Dernière intervention
27 septembre 2004

qqun peut m'aider

mon navigateur affiche tout blanc ! c-a-d rien
Messages postés
54
Date d'inscription
vendredi 1 février 2002
Statut
Membre
Dernière intervention
8 février 2007

parfait
fonctionne bien pour un debutant comme moi
mais existe-t'il un datagrid regroupant modif/suppr/ajout ?
un datagrid permettant de voir pour une un fichier commande les articles y afferants ?

bravo à ceux qui transmettent leur savoir

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.