asp.net - ascx中的Updatepanel刷新整个控件

标签 asp.net updatepanel sitecore sitecore7

我有一个 sitecore 项目,其中我准备了一个 ascx 用户控件形式的子布局。我需要在此用户控件中设置级联下拉菜单,并且根据我的发现,UpdatePanel 是可行的方法。问题是 UpdatePanel 似乎正在刷新整个控件,我认为这不是正确的行为。

我知道 SO 上有一些类似的问题,但没有一个解决方案对我有用。我也开始怀疑这可能是 Sitecore 特定的问题。

这是用户控件的代码示例:

    <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>

以及背后的代码:

    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)
    {

    }

页面加载正常,但是(调试时)更改 DDL1 的索引将在 MyItem.Text 中显示 Null 异常。这是在控制面板之外。注意:我还添加了一个脚本管理器。

我尝试过很多事情。设置不同的更新模式,通过从包管理器控制台执行 Install-Package AjaxControlToolkit 更新了我的解决方案中的 AjaxToolkit...但行为保持不变。

谢谢。

最佳答案

将 DDL1 的数据绑定(bind)放入 OnInit,而不是 Page_Load
并且不要在其中包含 if 语句,只需执行数据绑定(bind)即可。
OnInit 之后,所选值将被正确设置,您将能够在其他事件处理程序中访问 DDL1 的选项。

关于asp.net - ascx中的Updatepanel刷新整个控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20516211/

相关文章:

asp.net - jQuery UI 自动完成示例

asp.net - Css 样式停止在部分回发上工作

asp.net - 每次重新加载 updatepanel 时请求长度都会增加

Sitecore ItemID 随部署的不同而变化吗?

analytics - 添加 SessionEnd 管道处理器会影响 Sitecore Analytics 吗?

html - 使用 Html 帮助程序显示工具提示

javascript - 随机出现的多个 Canvas 图像

asp.net - 如何为中继器中的LinkBut​​ton执行AsyncPostBackTrigger

asp.net - 无法通过 SSL 访问网站

ASP.NET 在标签中显示日期