2017-12-20 10 views
0

は、Webコントロールで生成されたイベントによって更新パネル内の表の行を表示/非表示できません。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. 

のaspxファイル:

<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ファイル:

ASPX:

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

あなたはいつもあなたの答えを受け入れることができます - そのための最小評判要件はありません。あなたはおそらくアップボーディングを考えています(これは、ある程度の評判を必要とします)。参照してください:[回答の受け取りはどのように受け付けますか?](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(); 
    } 
} 
関連する問題