Bonjour tout le monde.

Je crois que j'ai encore zapp� un d�tail dans la gestion du PsotBack dans un UpdatePanel, mais je trouve pas.

Alors je soumets mon code :
C�t� HTML :
Code : 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
 
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="GestionMenu.ascx.vb" Inherits="Module_Gite_GestionMenu" %>
<asp:DropDownList ID="ddlMenu" runat="server" AutoPostBack="true"></asp:DropDownList>
<ajax:UpdatePanel ID="upMenu" runat="server" ChildrenAsTriggers="true">
    <Triggers>
        <ajax:AsyncPostBackTrigger ControlID="ddlMenu" EventName="SelectedIndexChanged" />
    </Triggers>
    <ContentTemplate>
    <asp:Table ID="tblMenu" runat="server">
        <asp:TableRow>
            <asp:TableCell>
                <asp:Button ID="btnEnregistrer" runat="server" Text="Enregistrer" />
            </asp:TableCell>
        </asp:TableRow>
    </asp:Table>
    <asp:Table ID="tblDetailMenu" runat="server"></asp:Table>
    <asp:Button ID="btnEnrDetailMenu" runat="server" Text="Enregistrer modifications" />
 
    </ContentTemplate>
</ajax:UpdatePanel>
J'ai enlev� quelques TableRow pour faire plus l�ger. Elles affichent des donn�es, sans rapport avec mon soucis.

Donc, � l'affichage on a une DDL en haut, des champs et un bouton "Enregistrer".
Juste en dessous, on a un bouton "Enregistrer modifications".

Lorsque l'on va choisir un truc dans la DDL il va y avoir une table qui va se mettre entre les deux boutons. Dans le CodeBehind, vous verrez tout cela, mais je ferais un peu de netoyage, pour que se ne soit pas imbuvable tout en gardant l'essentiel.

Voici le CodeBehind :
Code : 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
 
Partial Class Module_Gite_GestionMenu
    Inherits System.Web.UI.UserControl
 
    Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
        Dim dtlstMenu As DataTable = New DManager("Datadev").RetournerTable("SELECT MenuGiteId, NomMenu FROM dbo.GITE_MenuTitre WHERE ApplicationId = '" & Session("SES_ApplicationStr") & "'")
        With ddlMenu
            .DataSource = dtlstMenu
            .DataTextField = "NomMenu"
            .DataValueField = "MenuGiteId"
            .DataBind()
            .Items.Insert(0, New ListItem("...", 0))
        End With
    End Sub
 
    Protected Sub ddlMenu_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlMenu.SelectedIndexChanged
        Dim dtMenuTitre As DataTable = New DManager("DataDev").RetournerTable("SELECT * FROM dbo.GITE_MenuTitre WHERE MenuGiteId = '" & ddlMenu.SelectedValue & "'")
        txtNomMenu.Text = dtMenuTitre.Rows(0).Item("NomMenu")
        txtOrdreMenu.Text = dtMenuTitre.Rows(0).Item("OrdreMenu")
        txtTitreMenu.Text = dtMenuTitre.Rows(0).Item("TitreMenu")
 
        Dim dt As DataTable = New DManager("DataDev").RetournerTable("SELECT * FROM GITE_MenuGiteDetail WHERE MenuGiteId = '" & ddlMenu.SelectedValue & "'")
        For Each dr As DataRow In dt.Rows
            Dim r As New TableRow
            Dim cTexte, cOrdre As New TableCell
            Dim TexteMenu, OrdreMenu As New TextBox
            Dim hfIdDetailMenu As New HiddenField
            With hfIdDetailMenu
                .Value = dr.Item("IdMenuGiteDetail")
            End With
            With TexteMenu
                .Text = Replace(dr.Item("TexteMenu"), "<br />", vbCrLf)
            End With
            With OrdreMenu
                .Text = dr.Item("OrdreMenuGite")
            End With
            cTexte.Controls.Add(TexteMenu)
            cOrdre.Controls.Add(OrdreMenu)
            cOrdre.Controls.Add(hfIdDetailMenu)
            r.Cells.Add(cTexte)
            r.Cells.Add(cOrdre)
            tblDetailMenu.Rows.Add(r)
        Next
    End Sub
 
    Protected Sub btnEnrDetailMenu_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnEnrDetailMenu.Click
        Logage("biloute" & tblDetailMenu.Rows.Count)
        Try
            For Each r As TableRow In tblDetailMenu.Rows
                Dim TexteMenu As TextBox = r.Cells(0).FindControl(0)
                Dim OrdreMenu As TextBox = r.Cells(1).FindControl(0)
                Dim hfIdDetailMenu As HiddenField = r.Cells(1).FindControl(1)
                Dim z As String = New DManager("DataDev").RetournerScalaire("UPDATE GITE_MenuGiteDetail SET TexteMenu = '" & TexteMenu.Text & "', OrdreMenu = '" & OrdreMenu.Text & "' WHERE Id = '" & hfIdDetailMenu.Value & "'")
                Logage("UPDATE GITE_MenuGiteDetail SET TexteMenu = '" & TexteMenu.Text & "', OrdreMenu = '" & OrdreMenu.Text & "' WHERE Id = '" & hfIdDetailMenu.Value & "'")
            Next
        Catch ex As Exception
            Logage(ex.Message)
        End Try
    End Sub
End Class
Le r�sultat que j'ai est malheuresement simple : dans la proc�dure du click du bouton "Enregistrer modifications" vous voyez en premi�re ligne " Logage("biloute" & tblDetailMenu.Rows.Count)" c'est une proc�dure � moi qui log des choses dans un fichier texte, �a me permet de faire un debug sur mesure.

L�, vous aurez facilement vu que je cherche � connaitre le nombre de Row dans la Table au moment du click et le nombre est 0.
Du coup, je me dis qu'il doit y avoir du PostBack d�rri�re tout �a, mais je s�che, je ne vois pas tr�s bien comment le g�rer.

Pouvez vous m'aider ?