0

データ入力フォーム用に多数のペインを備えた ASP.NET アコーディオン コントロールを使用しています。いくつかのペイン内にはいくつかの UpdatePanels があるため、これらのパネル内の一部のコントロールを有効または無効にして、他の場所で入力した値によって除外されるフィールドにユーザーが値を入力できないようにすることができます。

すべて正常に動作しますが、何らかの理由で、UpdatePanel ポストバックが (指定された AsyncPostBack トリガーによって) トリガーされる機会の約半分で、アコーディオンの最初のペインが一時的に展開されて折りたたまれます。これにより、ページが完全なポストバックを実行するときに発生する恐ろしい「フラッシュ」エクスペリエンスが得られます。これは、まさに私が UpdatePanels を使用して回避しようとしているものです。

問題は最初のペインの内容に関連していないようです.2番目のペインが最初になるように最初のペインを完全に削除しようとしましたが、同じことが起こりました.

なぜこれが起こっているのか、それを修正する方法はありますか?

UPDATED WITH CODE これは、パネルの 1 つの例です。テーブルの使用にあまり腹を立てないでください。これは実際のテーブルであり、単にレイアウト目的で使用しているわけではありません!

<tr class="grouprow">
    <td>Transportation</td>
    <td><asp:RadioButtonList ID="rblTransportation" runat="server" RepeatDirection="Horizontal" SelectedValue='<%# Bind("AdmissionTransportation")%>' AutoPostBack="true" 
            OnSelectedIndexChanged="rblTransportation_SelectedIndexChanged" >
            <asp:ListItem Text="Unknown" Value="" />
            <asp:ListItem Text="Yes" Value="True" />
            <asp:ListItem Text="No" Value="False" />                                    
    </asp:RadioButtonList></td><td></td>
</tr>
<tr class="grouprow">
    <td>Transportation Duration</td>
    <td><asp:UpdatePanel ID="updTransportationHours" runat="server" UpdateMode="Conditional">
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="rblTransportation" EventName="selectedindexchanged" />
            </Triggers>
            <ContentTemplate>
                <asp:TextBox ID="txtTransportationHours" runat="server" Text='<%# Bind("AdmissionTransportationHours")%>' CssClass="tinytextbox" />
                <label class="unit">Hours</label>
                <asp:RegularExpressionValidator ID="revTransportationHours" runat="server" ControlToValidate="txtTransportationHours" ValidationExpression="\d{1,3}(\.\d{1,2})?"
                    ValidationGroup="Past30Days" ErrorMessage="Invalid format for Transporation Duration. Please enter in format 'xxx.xx', e.g. '3.25'" Display="Dynamic" 
                    CssClass="error" >*</asp:RegularExpressionValidator>
                <asp:RangeValidator ID="rvTransportationDuration" runat="server" ControlToValidate="txtTransportationHours" CssClass="error" ValidationGroup="Past30Days" type="Double"
                    ErrorMessage="The Transportation Duration cannot be more than 100" MinimumValue="0" MaximumValue="100" >*</asp:RangeValidator>
            </ContentTemplate>
    </asp:UpdatePanel></td><td></td>
</tr>
4

3 に答える 3

0

rblTransportation RadioButtonList UpdatePanel にもラップする必要があると思います。

そのコントロールは UpdatePanel にないため、完全なポストバックが発生します。

于 2013-04-11T15:21:13.147 に答える
-1

modalpanels<asp:blablacontrol style="Display:none;"> </asp:control> にも同じ問題があり、このコードで問題が解決しましたか

于 2013-04-11T14:07:05.583 に答える