2017-12-20 29 views
0

에서 웹 컨트롤 외부에서 생성 된 이벤트를 통해 업데이트 패널 내에서 테이블 행을 표시하거나 숨길 수 없음 more, 이상인 경우 첫 번째 ddl 항목 선택에서만 작동합니다 (SharePoint 컨텍스트 외부에서 완벽하게 작동 함).Sys.WebForms.PageRequestManagerServerErrorException : 잘못된 다시 게시 또는 콜백 인수

이 오류가 발생합니다 :

SCRIPT5022: Sys.WebForms.PageRequestManagerServerErrorException: Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation. 

영문 파일 :

<asp:TableRow runat="server" ID="tbr1"> 
    <asp:TableCell ID="tbc" runat="server" CssClass="ms-formbody"> 
     <asp:DropDownList ID="ddl" runat="server" EnableViewState="true" AutoPostBack="true" OnSelectedIndexChanged="ddl_SelectedIndexChanged" /> 
    </asp:TableCell> 
</asp:TableRow> 
<asp:TableRow ID="tbr2"> 
    <asp:TableCell> 
     <asp:UpdatePanel ID="udp" runat="server" UpdateMode="Always"> 
      <ContentTemplate> 
       <asp:Table ID="tb" runat="server"> 
        <asp:TableRow runat="server" ID="tbr21"> 
        <%-- content --%> 
        </asp:TableRow> 
       </asp:Table> 
      </ContentTemplate> 
      <Triggers> 
       <asp:AsyncPostBackTrigger ControlID="ddl" EventName="SelectedIndexChanged" /> 
      </Triggers> 
     </asp:UpdatePanel> 
    </asp:TableCell> 
</asp:TableRow> 

aspx.cs 파일 :

protected void ddl_SelectedIndexChanged(object sender, EventArgs e){ 
    if (ddl.SelectedItem.Text == "value1"){ 
     tb.Visible = true; 
     // instruction here 
    } else { 
     tbdadospessoais.Visible = false; 
     // instruction here 
    } 
} 
+1

추가하지 마십시오는 제목에 "해결". 대신 문제를 해결 한 경우 제공 한 답을 수락하십시오. – krlzlx

+0

@krlzlx 내 질문에 대한 답변을 게시했지만이를 수락 할 수 없습니다. 내 질문에 대답하는 대신 EDIT를 게시해야합니까? Ty –

+0

언제나 답변을 수락 할 수 있습니다. 최소 평판 요구 사항은 없습니다. 아마 당신은 upvoting을 생각하고있을 것입니다. * 어느 정도의 평판이 필요합니다. 참조하십시오 : [답변 수락 방법은 무엇입니까?] (https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) 사이트 [둘러보기] 사이트의 주요 기능이 작동하는 방식과 커뮤니티 규칙에 대해 자세히 알아보십시오. – EJoshuaS

답변

0

수행 조건부 갱신 :

영문을 파일 :

<asp:TableRow runat="server" ID="tbr1"> 
    <asp:TableCell ID="tbc" runat="server" CssClass="ms-formbody"> 
     <asp:DropDownList ID="ddl" runat="server" EnableViewState="true" AutoPostBack="true" OnSelectedIndexChanged="ddl_SelectedIndexChanged" /> 
    </asp:TableCell> 
</asp:TableRow> 
<asp:TableRow ID="tbr2"> 
    <asp:TableCell> 
     <asp:UpdatePanel ID="udp" runat="server" UpdateMode="Always"> 
      <ContentTemplate> 
       <asp:Table ID="tb" runat="server"> 
        <asp:TableRow runat="server" ID="tbr21"> 
        <%-- content --%> 
        </asp:TableRow> 
       </asp:Table> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
    </asp:TableCell> 
</asp:TableRow> 

aspx.cs 파일 :

protected void ddl_SelectedIndexChanged(object sender, EventArgs e){ 
    if (ddl.SelectedItem.Text == "value1"){ 
     tb.Visible = true; 
     // instruction here 
     upd.update(); 
    } else { 
     tbdadospessoais.Visible = false; 
     // instruction here 
     upd.update(); 
    } 
}