Bonjour à tous,

Mon probleme est le suivant :
- dans un de mes usercontrols, j'ai un updatepanel
- dans cet update panel, j'ai un custom control 'styledtable' qui contient un itemplate 'contenttemplate', et un panel contenant un linkbouton permettant d'affiche/cacher mon custom control
- dans ce content se trouve mes champs et bouton devant renvoyer un formulaire.

mon custom control me sert uniquement à definir une table stylée et hérite de Table et de INamingContainer, les itemplate sont en fait des styletableitem heritant de TableCell et INamingcontainer.

lorsque je clique sur mon linkbutton mon updatepanel devrais se rafraichir et afficher mon custom control contenant mon formulaire.
or les evenement sont bien executé (en debug avec breakpoint il execute bien ce qu'il doit faire mettre le custom control visible) mais a l'ecran rien ne change comme si l'update panel ne se refraichissait pas ou ne catchais pas l'event du click sur le linkbouton.

lorsque je remplace mon custom control 'styledtable' par un simple panel cela fonctionne parfaitement (mais je n'ai plus ma table stylée :p).

ce qu'il me semble bizarre c'est que le linkbutton n'est meme pas dans le custom control remplacé ...

si quelqu'un aurait une petite idée ou pourait m'aiguiller je lui en serait reconnaissant

voici quelques extrait de code :


le custom control
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
 
 
    [System.Web.UI.ToolboxData(@"<{0}:StyledTable runat=""server""></{0}:StyledTable>")]
    public class StyledTable : System.Web.UI.WebControls.Table, System.Web.UI.INamingContainer
    {
 
        public class StyledTableItem : System.Web.UI.WebControls.TableCell, System.Web.UI.INamingContainer
        {
        }
 
        private System.Web.UI.ITemplate contentTemplate = null;
        private StyledTableItem content = null;
 
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public StyledTableItem Content
        { get { this.EnsureChildControls(); return content; } }
 
        [System.Web.UI.TemplateContainer(typeof(StyledTableItem))]
        [System.Web.UI.PersistenceMode(System.Web.UI.PersistenceMode.InnerProperty)]
        [System.Web.UI.TemplateInstance(System.Web.UI.TemplateInstance.Single)]
        public System.Web.UI.ITemplate ContentTemplate { get { return contentTemplate; } set { contentTemplate = value; } }
 
 
        protected override void CreateChildControls()
        {
            base.CreateChildControls();
            SetControls();
        }
 
        void SetControls()
        {
            if (loaded) return;
            loaded = true;
            //Controls.Clear();
            System.Web.UI.WebControls.TableRow rowContent = new System.Web.UI.WebControls.TableRow();
            rowContent.CssClass = CssClass + "Content";
 
            System.Web.UI.WebControls.TableCell cellContentLeft = new System.Web.UI.WebControls.TableCell();
            cellContentLeft.CssClass = CssClass + "ContentLeft";
            StyledTableItem cellContentCenter = new StyledTableItem();
            cellContentCenter.CssClass = CssClass + "ContentCenter";
            System.Web.UI.WebControls.TableCell cellContentRight = new System.Web.UI.WebControls.TableCell();
            cellContentRight.CssClass = CssClass + "ContentRight";
 
            if (ContentTemplate != null) ContentTemplate.InstantiateIn(cellContentCenter);
 
            rowContent.Cells.Add(cellContentLeft);
            rowContent.Cells.Add(cellContentCenter);
            rowContent.Cells.Add(cellContentRight);
 
            Rows.Add(rowContent);
        }
 
        public StyledTable()
        {
            base.Init += new EventHandler(StyledTable_Init);
        }
 
        void StyledTable_Init(object sender, EventArgs e)
        {
            SetControls();
        }
 
        public override System.Web.UI.ControlCollection Controls
        {
            get
            {
                this.EnsureChildControls();
                return base.Controls;
            }
        }
le controle ascx
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
 
<asp:UpdatePanel ID="upPage" runat="server">
    <ContentTemplate>
        <asp:Panel ID="pEdit" runat="server" Visible="False" meta:resourcekey="pEdit" DefaultButton="bSave">
            <div>
                <ep:StyledTable ID="stEdit" runat="server" CssClass="editFrame">
                    <ContentTemplate>
                    <table class="editTable" style="width:auto;padding-left:auto;padding-right:auto;">
                        <tr>
                            <td class="editFieldName"><asp:Label ID="lPageTitle" runat="server" Text="Title" meta:resourcekey="lPageTitle" /></td>
                            <td class="editFieldValue">
                                <asp:TextBox ID="tbPageTitle" runat="server" ValidationGroup="page" MaxLength="255" CssClass="veryLongField" meta:resourcekey="tbPageTitle" />
                                <asp:RequiredFieldValidator ID="rfvPageTitle" ControlToValidate="tbPageTitle" runat="server" ValidationGroup="page" Text="*" ErrorMessage="Title is a required field." meta:resourcekey="rfvPageTitle" />
                            </td>
                        </tr>
                        <tr>
                            <td colspan="2" class="editFieldSave"><asp:Button ID="bSave" runat="server" Text="Save" ValidationGroup="page" meta:resourcekey="bSave" /></td>
                        </tr>
                    </table>
                    </ContentTemplate>
                </ep:StyledTable>
            </div>
        </asp:Panel>
        <asp:Panel ID="pLink" runat="server" meta:resourcekey="pLink">
            <asp:LinkButton ID="lbEditPage" runat="server" Text="Edit page" meta:resourcekey="lbEditPage" />
        </asp:Panel>
 
    </ContentTemplate>
</asp:UpdatePanel>

le code du controle ascx (.cs)
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
 
    public partial class Page : EasyPublish.Web.UI.UserControl
    {
        protected void Page_Init(object sender, EventArgs e)
        {
            if (Page.BizPageCulture == null || !Page.BizMemberRoles.ContainsKey("Editor")) Visible = false;
            else
            {
                lbEditPage.Click += new EventHandler(lbEditPage_Click);
                bSave.Click += new EventHandler(bSave_Click);
            }
        }
 
        void bSave_Click(object sender, EventArgs e)
        {
            pEdit.Visible = false;
            pLink.Visible = true;
 
        }
 
        void lbEditPage_Click(object sender, EventArgs e)
        {
            pEdit.Visible = true;
            pLink.Visible = false;
 
        }
    }