Updatepanel in ascx refreshing the whole control

Viewed 1455

I've got a sitecore proejct, in which I have prepared a sub-layout in the form of an ascx User Control. I need to set up cascading drop downs in this user control, and based on what I found an UpdatePanel is the way to go. The problem is that the UpdatePanel seems to be refreshing the whole control, which I don't think is the correct behaviour.

I understand there are some similar questions on SO, but none of the solutions worked for me. I'm also beginning to suspect that this may be a Sitecore specific issue.

Here is a code sample of the user control:

    <p><%= MyItem.Text %>" /></p>

    <asp:UpdatePanel ID="LocationFilterUpdatePanel" runat="server">
    <ContentTemplate>

        <asp:DropDownList ID="DDL1" OnSelectedIndexChanged="DDL1_SelectedIndexChanged" runat="server" AutoPostBack="true">

        </asp:DropDownList>


        <asp:DropDownList ID="DDL2"  OnSelectedIndexChanged="DDL2_SelectedIndexChanged" runat="server" AutoPostBack="true">

        </asp:DropDownList>

    </ContentTemplate>
    </asp:UpdatePanel>

And the Code Behind:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!System.Web.UI.ScriptManager.GetCurrent(Page).IsInAsyncPostBack)
        {
            var context = new SitecoreContext();
            //Get Model from Sitecore

            DDL1.DataSource = Model.Data;
            DDL1.DataValueField = "Id";
            DDL1.DataTextField = "Name";
            DDL1.DataBind();
        }

    }

    protected void DDL1_SelectedIndexChanged(object sender, EventArgs e)
    {
        var context = new SitecoreContext();
        //Get Model from Sitecore

        DDL2.DataSource = Model.Data;
        DDL2.DataValueField = "Id";
        DDL2.DataTextField = "Name";
        DDL2.DataBind();
    }

    protected void DDL2_SelectedIndexChanged(object sender, EventArgs e)
    {

    }

The page loads fine, but (when debugging) changing the DDL1's index it will show a Null exception in MyItem.Text. This is outside the control panel. Note: I have also added a script manager.

There are plenty of things I've tried. Setting different update modes, updated the AjaxToolkit in my solution by executing Install-Package AjaxControlToolkit from the Package Manager Console... but the behaviour remains the same.

Thank you.

2 Answers
Related