加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 06:27:19 所属栏目:asp.Net 来源:网络整理
导读:我有一个sitecore proejct,我已经以ascx用户控件的形式准备了一个子布局.我需要在这个用户控件中设置级联下拉菜单,并根据我发现的UpdatePanel是要走的路.问题是UpdatePanel似乎刷新了整个控件,我不认为这是正确的行为. 我知道SO上有一些类似的问题,但没有一
我有一个sitecore proejct,我已经以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异常.这是在控制面板之外.注意:我还添加了一个脚本管理器.

我尝试过很多东西.设置不同的更新模式,通过从Package Manager控制台执行Install-Package AjaxControlToolkit来更新我的解决方案中的AjaxToolkit ……但行为保持不变.

谢谢.

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读