Bonjour à tous,

Je cherche à réaliser un questionnaire qui « tourne » au fur et à mesure des réponses.

Le problème, est que sur l’évènement OnClick de mon bouton (qui est sensé rafraîchir l’update panel) je parviens à afficher la msgbox contenu dans le pageload (normalement uniquement au chargement de la page nan ?), et donc que mon compteur se réinitialise…

Un peu de code sera surement plus parlant :
VB (behind)
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
 
Imports System.Data.Odbc
 
Public Class quizz
 
    Inherits System.Web.UI.Page
    Dim DataTable As New DataTable
    Dim dtCount As New Integer
    Dim numQ As New Integer
 
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        MsgBox("REVIEN ICI ?")
        DataTable = initQuizz()
        dtCount = DataTable.Rows.Count
        numQ = 0
        If (dtCount > numQ) Then
            viewQuestion(DataTable, numQ)
        Else
            Response.Redirect("..\------------.aspx")
        End If
    End Sub
 
    Protected Sub btnSave_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSave.Click
        numQ = numQ + 1
        viewQuestion(DataTable, numQ)
        MsgBox("numQ")
    End Sub
 
    Private Sub viewQuestion(ByVal dt As DataTable, ByVal i As Integer)
        lblQuestion.Text = dt.Rows(i).ItemArray(1)
        lblDescriQuestion.Text = dt.Rows(i).ItemArray(2)
    End Sub
 
    Function initQuizz()
       -> ici je vais ds ma BD et récup mes info (sa marche pas de pb)
    End Function
 
    'Private Function currentQuestion(ByVal numQ As Integer)
    'MsgBox("save des info courrant")
    'MsgBox(numQ)
    'If (numQ < dtCount) Then
    'numQ = numQ + 1
    'Return numQ
    'Else
    'MsgBox("fin du questionnaire")
    'End If
    'Return Nothing
    'End Function
End Class
ASP
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
 
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="btnSave" />
        </Triggers>
        <ContentTemplate>
            <fieldset>
                <legend> QUESTIONNAIRE</legend>
                <hr />
                <asp:Label ID="lblInfos" runat="server" Text="PréInfos"></asp:Label><br />
                <asp:Label ID="lblQuestion" runat="server" Text="Question"></asp:Label><br />
                <asp:Label ID="lblDescriQuestion" runat="server" Text="desc"></asp:Label><br />
                <asp:RadioButton ID="RadioButton1" runat="server" />
                <asp:RadioButton ID="RadioButton2" runat="server" />
                <asp:RadioButton ID="RadioButton3" runat="server" />
                <asp:RadioButton ID="RadioButton4" runat="server" /><br />        
                <asp:TextBox ID="txtExplain" runat="server" Rows="5" style="margin-top: 0px"></asp:TextBox> <br /> 
 
            </fieldset>
        </ContentTemplate>
    </asp:UpdatePanel>
    <asp:Button ID="btnSave" runat="server" Text="save" />
    <asp:UpdateProgress ID="UpdateProgress1" runat="server">
        <ProgressTemplate>
            ...updating...
        </ProgressTemplate>
    </asp:UpdateProgress>
(En gros j’affiche Q1 après je click sur « Save » et j’affiche Q2. Par la suite, mon compteur ne dépasse pas Q2 )

Je ne comprends pas, peut-être que cela vient du fait que mon incrémentation se fait au sein d’une fonction et qu’elle est donc annulé à la fin de celle si… pourtant ma variable est déclaré en globale…

Merci d’avance de vos réponses !

Boulouk_22