Evenement ajouter une ligne dans une datagrid

mdelahais Messages postés 30 Date d'inscription mercredi 24 mars 2004 Statut Membre Dernière intervention 16 juin 2009 - 2 juin 2004 à 10:20
cs_lejuif Messages postés 14 Date d'inscription lundi 28 avril 2003 Statut Membre Dernière intervention 10 juin 2004 - 10 juin 2004 à 16:08
Bonjour à tous,
Je rempli une datagrid gràace à une requête sur une table. La première donnée de ma datagrid est la clé. Je peux également ajouter ou modifier les données directement depuis la datagrid. Mais il me reste un petit problème. Si j'ajoute une nouvelle ligne, il faut que j'ajoute la clé. Mais je voudrai que la clé soit calculée de manière à éviter de remettre une clé existant déjà.
Pour cela, je pensai calculer la clé dès qu'on ajoute une ligne, mais je n'arrive pas à trouver quel évenement y correspond?
Merci de votre aide
Matthieu

7 réponses

gaa179 Messages postés 361 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 12 novembre 2009 2
2 juin 2004 à 10:50
Salut,

Sur l'évènement OnAddNew(), j'ajoute la valeur dans le champ du recordset qui est utlisé comme DataSource du Datagrid.

Private Sub DataGrid1_OnAddNew()
'Ajoute la relation vers la facture
With RsArtFactSub
If IsNull(!Id_Fact) Then
!Id_Fact = TId_Facture.Text
End If
End With

End Sub

A+
0
mdelahais Messages postés 30 Date d'inscription mercredi 24 mars 2004 Statut Membre Dernière intervention 16 juin 2009 1
2 juin 2004 à 11:04
J'ai oublié de préciser que je bossais sur vb.net... le OnAddNew n'existe pas dans la liste des évenements proposés. J'ai tout de même essayé, mais ça ne marche pas...
Tu n'as pas une autre idée?
Merci
0
cs_lejuif Messages postés 14 Date d'inscription lundi 28 avril 2003 Statut Membre Dernière intervention 10 juin 2004
2 juin 2004 à 15:14
Utilises tu un DataAdapter et un dataset?
Y'a t'il un compteur automatique sur ta clef?
0
mdelahais Messages postés 30 Date d'inscription mercredi 24 mars 2004 Statut Membre Dernière intervention 16 juin 2009 1
2 juin 2004 à 15:26
Je fais ma requête avec un dataset et un dataadapter. Ensuite, je le place dans un tablestyle que je charge dans la tablesytle de ma datagrid parce que j'ai utilisé des combobox dans ma datagrid.
Par contre, il n'y a pas de compteur automatique.

Sinon, j'étais parti sur une autre solution :
1. je compte le nb de lignes ds ma datagrid
2. qd je clique sur la datagrid, je regarde si c'est une nouvelle ligne gràace au nb de lignes que j'ai compté en &
3. Si c'est une nouvelle ligne, je calcule la nouvelle clé et je l'insère dans la datagird... Maintenant, je cherche comment placé une valeur dans une datagird en fonction de ses coordonnées (1ere colonne, derniere ligne)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_lejuif Messages postés 14 Date d'inscription lundi 28 avril 2003 Statut Membre Dernière intervention 10 juin 2004
2 juin 2004 à 17:37
tu peux aussi creer une ouvelle ligne dans ton dataset

dim newrow as nomDataset.NomTableRow = monDataSet1.NEWnomTableROW
(nomDataSet1 correspond a l'instance du dataset, nomdataset est l'objet)

ensuite tu remplis les champs que tu as besoin dans ta ligne de dataset (dont ta clef, par ex newrow.clef = X)

Puis tu rajoutes la ligne au dataset
nomdatasets.nomTable.add(newrow)

(puis
NomdataAdapter.update(nomDataset1)
uniquement si tu veux mettre la base de données a jour en fonction des données de ton dataset)

et tu finis par NomDatagrid.databind() (pour remplir le datagrid avec les données de ton dataset)

Ps : avec cette méthode il est possible de remplir les valeurs directement dans la datagrid mais pour cela il faut utiliser le EditItemindex du datagrid .
Si besoin je peux toujours poster du code source pour que ce soit plus clair)

Voila j'espere que ça te sera utile

Sinon tu peux toujours utiliser les evenements ItemCommand (il faudra alors données des comands names a certains objets de ton datagrid comme des boutons par exemple) ou updateCommand (nécessite un objet ayant un commandName="Update")
0
mdelahais Messages postés 30 Date d'inscription mercredi 24 mars 2004 Statut Membre Dernière intervention 16 juin 2009 1
10 juin 2004 à 09:41
Oui, si éventuellement tu avais du code source, ça pourrait m'aider.
Merci
0
cs_lejuif Messages postés 14 Date d'inscription lundi 28 avril 2003 Statut Membre Dernière intervention 10 juin 2004
10 juin 2004 à 16:08
Voila un exemple de page ,en esperant que cela t'aide

*************************************************
********************code vb***********************
Sub genererDgRemise_Facturefournisseur()
        daRemise_FactureFournisseur.SelectCommand.Parameters("@facturefournisseur_id").Value = facturefournisseur_id
        daRemise_FactureFournisseur.Fill(DsRemise_facturefournisseur1)
        dgRemise_FactureFournisseur.DataBind()

    End Sub

    Private Sub dgRemise_FactureFournisseur_CancelCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgRemise_FactureFournisseur.CancelCommand
        dgRemise_FactureFournisseur.EditItemIndex = -1
        Call genererDgRemise_Facturefournisseur()
        Call desactiverbouton()
    End Sub

    Private Sub dgRemise_FactureFournisseur_DeleteCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgRemise_FactureFournisseur.DeleteCommand

        daRemise_FactureFournisseur.SelectCommand.Parameters("@facturefournisseur_id").Value = facturefournisseur_id
        daRemise_FactureFournisseur.Fill(DsRemise_facturefournisseur1)
        DsRemise_facturefournisseur1.FactureFournisseurRemise.FindByFactureFournisseurRemise_id(CInt(dgRemise_FactureFournisseur.DataKeys(e.Item.ItemIndex))).Delete()
        daRemise_FactureFournisseur.Update(DsRemise_facturefournisseur1)
        Call genererDgRemise_Facturefournisseur()

    End Sub

    Private Sub dgRemise_FactureFournisseur_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgRemise_FactureFournisseur.EditCommand
        daRemise_FactureFournisseur.SelectCommand.Parameters("@facturefournisseur_id").Value = facturefournisseur_id
        daRemise_FactureFournisseur.Fill(DsRemise_facturefournisseur1)
        dgRemise_FactureFournisseur.EditItemIndex = e.Item.ItemIndex

        Call genererDgRemise_Facturefournisseur()

    End Sub

    Private Sub dgRemise_FactureFournisseur_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgRemise_FactureFournisseur.UpdateCommand

        daRemise_FactureFournisseur.SelectCommand.Parameters("@facturefournisseur_id").Value = facturefournisseur_id
        daRemise_FactureFournisseur.Fill(DsRemise_facturefournisseur1)

        Dim tbdesignation As TextBox = CType(e.Item.FindControl("tbdesignation"), TextBox)
        Dim tbmontant As TextBox = CType(e.Item.FindControl("tbmontant"), TextBox)
        If Not IsNothing(tbdesignation) Then
            Dim rowchange As dsRemise_facturefournisseur.FactureFournisseurRemiseRow = DsRemise_facturefournisseur1.FactureFournisseurRemise.FindByFactureFournisseurRemise_id(CInt(dgRemise_FactureFournisseur.DataKeys(e.Item.ItemIndex)))

            If IsNothing(rowchange) Then
                Dim rownew As dsRemise_facturefournisseur.FactureFournisseurRemiseRow = DsRemise_facturefournisseur1.FactureFournisseurRemise.NewFactureFournisseurRemiseRow
                With rownew
                    .FactureFournisseur_id = facturefournisseur_id
                    .Montant = CDbl(Replace(tbmontant.Text, ",", "."))
                    .Designation = tbdesignation.Text
                End With
                DsRemise_facturefournisseur1.FactureFournisseurRemise.Rows.Add(rownew)
            Else
                With rowchange
                    .Designation = tbdesignation.Text
                    .Montant = CDbl(Replace(tbmontant.Text, ",", "."))
                End With

            End If

            daRemise_FactureFournisseur.Update(DsRemise_facturefournisseur1)
            DsRemise_facturefournisseur1.Clear()
        End If
        dgRemise_FactureFournisseur.EditItemIndex = -1
        Call activerbouton()

        Call genererDgRemise_Facturefournisseur()

    End Sub

    Private Sub dgRemise_FactureFournisseur_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgRemise_FactureFournisseur.ItemDataBound
        Call appliquerstyledg(e)
        Call CalculerMontantTTC(e)
    End Sub

    Private Sub btnAjout_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btnAjout.Click
        Call desactiverbouton()

        Dim RowNew As dsRemise_facturefournisseur.FactureFournisseurRemiseRow = DsRemise_facturefournisseur1.FactureFournisseurRemise.NewFactureFournisseurRemiseRow
        With RowNew
            .Designation = ""
            .Montant = 0
            .FactureFournisseur_id = facturefournisseur_id
        End With

        DsRemise_facturefournisseur1.FactureFournisseurRemise.Rows.Add(RowNew)

        dgRemise_FactureFournisseur.EditItemIndex = 0
        Call genererDgRemise_Facturefournisseur()
    End Sub


**************************************************
****************code html correspondant**************


</H4>
" DataMember="FactureFournisseurRemise" DataKeyField="FactureFournisseurRemise_id" AutoGenerateColumns="False" SHOWFOOTER="True">
<COLUMNS>

'>

<EDITITEMTEMPLATE>
'>

*
</EDITITEMTEMPLATE>

'>

<FOOTERTEMPLATE>
0 ?
</FOOTERTEMPLATE>
<EDITITEMTEMPLATE>
'>
?
*
*
</EDITITEMTEMPLATE>

 

<EDITITEMTEMPLATE>
 

</EDITITEMTEMPLATE>

</COLUMNS>

0
Rejoignez-nous