Bonjour,

J'ai un soucis à l'utilisation du controle Ajax TabContainer.

Je veux rafraichir uniquement le contenu des tabulations lorsque je les sélectionne, et pas toute la page.
Pour ce faire j'utilise un UpdatePanel dans chaque tabulation.

Le rafraichissement de l'UpdatePanel est déclenché par un AsyncPostBack sur un clic sur un bouton (1 bouton par tabulation).

Le clic sur le bouton est simulé lors de l'appel de la méthode clientActiveTabChanged lors du déclenchement de l'évenement OnClientActiveTabChanged du TabContainer.

Je ne comprend pas pourquoi toute la page se rafraichie et pas seulement les tabulations.

Je suis parti de l'exemple suivant : http://mattberseth.com/blog/2007/07/...nels_with.html

Je vous joint mon code de test ci-dessous.

merci de votre aide...

Cordialement,
Sébastien

La page TestTabContainer.aspx :

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
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
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="TestTabContainer.aspx.vb" Inherits="GestionEscales.TestTabContainer" %>
 
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="cc1" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>TabContainer Test</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
 
    </div>
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
 
   <script type="text/javascript" language="javascript">
                function clientActiveTabChanged(sender, args) {   
 
                    sender.get_clientStateField().value = sender.saveClientState();
 
                    if(sender.get_activeTabIndex() == 0){                        
                        __doPostBack('<% = Button1.UniqueID %>', '');
                    }
                    else if(sender.get_activeTabIndex() == 1){                        
                        __doPostBack('<% = Button2.UniqueID %>', '');
                    }
                }         
            </script>
 
 
    <br />
    Some text in the page...
    <br />
    That should not blink when switching between Tab1 and Tab2.<br />
 
 
    <br />
    <asp:UpdatePanel ID="UpdatePanel3" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:Button ID="Button1" runat="server" Text="Button 1" 
                UseSubmitBehavior="False" style="display:none" />
            &nbsp;<asp:Button ID="Button2" runat="server" Text="Button 2" 
                UseSubmitBehavior="False" style="display:none" />
        </ContentTemplate>
    </asp:UpdatePanel>
    <br />
 
 
    <cc1:TabContainer ID="TabContainer1" runat="server" ActiveTabIndex="0" 
                Height="100px" Width="95%" 
        OnClientActiveTabChanged="clientActiveTabChanged">
        <cc1:TabPanel ID="TabPanel1" runat="server" HeaderText="TabPanel1">
            <ContentTemplate>
                <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"><ContentTemplate>
                        <asp:Label ID="Label1" runat="server" Text="Test Tab 1"></asp:Label>
 
                </ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
 
 
 
        </ContentTemplate>
 
</cc1:TabPanel>
        <cc1:TabPanel ID="TabPanel2" runat="server" HeaderText="TabPanel2">
            <ContentTemplate>
                <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
                    <ContentTemplate>
                        &nbsp;<asp:Label ID="Label2" runat="server" Text="Test Tab 2"></asp:Label>
                    </ContentTemplate>
                    <Triggers>
                        <asp:AsyncPostBackTrigger ControlID="Button2" EventName="Click" />
                    </Triggers>
                </asp:UpdatePanel>
 
 
        </ContentTemplate>
 
</cc1:TabPanel>
    </cc1:TabContainer>
    </form>
</body>
</html>
La page TestTabContainer.aspx.vb :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Public Partial Class TestTabContainer
    Inherits System.Web.UI.Page
 
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
        Label1.Text = Label1.Text & ", updated "
    End Sub
 
    Protected Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
        Label2.Text = Label2.Text & ", updated"
    End Sub
End Class