Bonjour,

J'ai un (voir deux) problème(s) sur le comportement d'une page qui ne se comporte pas pareil à partir de l'environnement de test de Visual Studio et la même page publiée sur un serveur.

Le concept :
- Chargement d'un fichier XML dans une variable de session sous forme de Datatable.
- Chargement d'une gridview à partir de cette Datatable (Gridview avec Select,Edit et Delete)

Voilà les problèmes :
* - Lors de la suppression d'une ligne de la gridview par la commande Delete :
Méthode :
- Appel d'une fonction de suppression avec en paramètre la ligne à supprimée.
- Chargement de la variable de session dans une datatable, suppression de la ligne correspondante, databind de la datatable dans la gridview.

Env. de test : La suppression se passe très bien. (1 ligne)
Site Publié : 2 lignes sont supprimées dans la gridview. (la ligne voulue et la suivante)




* - Lors de l'ajout d'une ligne dans la gridview :
Méthode :
- Après remplissage du formulaire d'ajout.
- Chargement de la variable de session dans une datatable, ajout d'une ligne avec les éléments dedans, databind de la datatable dans la gridview.

Env. de test : L'ajout de ligne se passe très bien.
Site Publié : Il ne se passe rien.



le code pour les courageux : (il est pas long)

Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
 
Imports System.Xml
Imports System.Collections.ObjectModel
 
 
Partial Class _Default
    Inherits System.Web.UI.Page
 
 
 
    Private strOutput As String = ""
    Private PathOfXML As String = "\\10.15.78.216\transition\pubs.xml"
    Private Tab() As String = {"datedebut", "datefin", "titre", "prixbase", "prixpromo", "categorie", "calibre", "origine", "photo"}
 
 
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            'Chargement des photos dans une DropDownList
            Dim files As String() = System.IO.Directory.GetFiles(Server.MapPath("~/photo/"), "*.jpg")
            For Each f As String In files
                ddl.Items.Add(System.IO.Path.GetFileName(f))
            Next
            ChargementXML()
        End If
 
    End Sub
 
    Protected Sub ChargementXML()
        Dim xmldoc As New XmlDataDocument()
 
        Try
            xmldoc.DataSet.ReadXml(PathOfXML)
 
            GridView1.DataSource = xmldoc.DataSet
            GridView1.DataMember = xmldoc.DataSet.Tables(0).TableName
 
            GridView1.DataBind()
 
            Session("pubs") = xmldoc.DataSet.Tables(0)
 
        Catch ex As Exception
            strOutput = "Impossible d'accéder au fichier XML" & "<br />" & ex.Message.ToString
        End Try
 
        output.Text = strOutput
    End Sub
 
    Protected Sub GridView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.SelectedIndexChanged
        GridView1.SelectedIndex = -1
    End Sub
 
    Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
        Select Case e.CommandName
            Case "Select", "Edit"
                For Each t As String In Tab
                    Select Case t
                        Case "photo"
                            Dim Photo As String = CType(GridView1.Rows(e.CommandArgument.ToString).FindControl(t & "LabelGV"), Label).Text
                            CType(Panel1.FindControl(t & "Image"), Image).ImageUrl = "~/Photo/" & Photo
                            CType(Panel1.FindControl(t & "Image"), Image).AlternateText = "~/Photo/" & Photo
                            For i As Integer = 0 To ddl.Items.Count - 1
                                If ddl.Items(i).Text = Photo Then
                                    ddl.SelectedIndex = i
                                    Exit For
                                End If
                            Next
                        Case "prixbase", "prixpromo"
                            CType(Panel1.FindControl(t & "Label"), Label).Text = CType(GridView1.Rows(e.CommandArgument.ToString).FindControl(t & "LabelGV"), Label).Text & " €"
                            CType(Panel2.FindControl(t & "Tb"), TextBox).Text = CType(GridView1.Rows(e.CommandArgument.ToString).FindControl(t & "LabelGV"), Label).Text
                        Case Else
                            CType(Panel1.FindControl(t & "Label"), Label).Text = CType(GridView1.Rows(e.CommandArgument.ToString).FindControl(t & "LabelGV"), Label).Text
                            CType(Panel2.FindControl(t & "Tb"), TextBox).Text = CType(GridView1.Rows(e.CommandArgument.ToString).FindControl(t & "LabelGV"), Label).Text
                    End Select
                Next
                If e.CommandName = "Edit" Then
                    modeLabel.Text = "Modification"
                    hfIdRow.Value = e.CommandArgument
                End If
                CType(UpdatePanel1.FindControl("mpePanel" & e.CommandName), AjaxControlToolkit.ModalPopupExtender).Show()
            Case "Delete"
                ActionOnXML(e.CommandName, e.CommandArgument.ToString)
            Case Else
                ActionOnXML(e.CommandName, e.CommandArgument.ToString)
        End Select
    End Sub
 
    Protected Sub ActionOnXML(ByVal mode As String, Optional ByVal idOfArticle As Integer = -1)
        Dim dt As New Data.DataTable
        dt = Session("pubs")
 
        Select Case mode
            Case "Add", "Ajout"
                Dim nr As Data.DataRow = dt.NewRow
                dt.Rows.Add(AddModifArticle(nr))
            Case "Edit", "Modification"
                Dim cr As Data.DataRow = dt.Rows(idOfArticle)
                AddModifArticle(cr)
            Case "Delete"
                dt.Rows(idOfArticle).Delete()
                log.Text += Date.Now.ToString & " : Nombre de DataRow = " & dt.Rows.Count & "<br />"
                log.Text += "ActionOnXML : " & mode & " (" & idOfArticle & ")<br /><br />"
        End Select
 
        GridView1.DataSource = dt
        GridView1.DataBind()
    End Sub
 
    Private Function AddModifArticle(ByVal dr As Data.DataRow) As Data.DataRow
        For Each t As String In Tab
            Select Case t
                Case "photo"
                    dr(t) = ddl.SelectedItem.Text
                Case Else
                    dr(t) = CType(Panel2.FindControl(t & "Tb"), TextBox).Text
            End Select
        Next
        Return dr
    End Function
 
    Protected Sub GridView1_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GridView1.RowDeleting
        e.Cancel = True
    End Sub
    Protected Sub GridView1_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles GridView1.RowEditing
        e.Cancel = True
    End Sub
 
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bRec.Click
        Dim dt As Data.DataTable = Session("pubs")
        dt.DataSet.WriteXml(PathOfXML)
    End Sub
 
    Protected Sub GridView1_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.PreRender
        output.Text = GridView1.Rows.Count & " articles trouvés."
    End Sub
 
    Protected Sub bValid_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bValid.Click
        ActionOnXML(modeLabel.Text, hfIdRow.Value)
    End Sub
 
    Protected Sub lbAddPub_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lbAddPub.Click
        For Each t As String In Tab
            Select Case t
                Case "photo"
                    ddl.SelectedIndex = 0
                Case Else
                    CType(Panel2.FindControl(t & "Tb"), TextBox).Text = ""
            End Select
        Next
        modeLabel.Text = "Ajout"
        mpePanelEdit.Show
    End Sub
End Class

Merci de m'aider.