ascx User Control의 형태로 하위 레이아웃을 준비한 sitecore proejct가 있습니다. 이 사용자 정의 컨트롤에서 계단식 드롭 다운을 설정하고 UpdatePanel이 무엇을 기반으로하는지 알아야합니다. 문제는 UpdatePanel이 전체 컨트롤을 새로 고치는 것 같아서 올바른 동작이라고 생각하지 않습니다.ascx의 Updatepanel이 전체 컨트롤을 새로 고침
나는 비슷한 질문이 있지만 이해할 수있는 해결책이 없다는 것을 알고 있습니다. 또한 이것이 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을 업데이트했지만 동작은 동일하게 유지됩니다.
감사합니다.
감사합니다. 그것은 효과가 있었다. OnInit에서 왜 Page_Load가 아닌지 알면 감사하겠습니다. 나는 그것을 시험해보기 위해 (별도의 사이트가 아닌) 별도의 프로젝트를 만들었고 페이지로드에이 코드를 남겨두면 괜찮습니까? –
OnInit 중에 viewstate 값이 아직로드되지 않았기 때문에 작동합니다. 따라서 드롭 다운 목록에 값을 채울 수 있습니다. 그런 다음 OnInit과 Page_Load 사이에서 PreLoad 이벤트가 발생하여 viewstate가로드되고 컨트롤에 적용됩니다 (예 : 선택한 인덱스 설정). 자세한 내용은 http://msdn.microsoft.com/en-us/library/ms178472.aspx를 참조하십시오. –
그건 실제로 일어난 일입니다. – Younes