2

私のコードでは、すべての DropDownList が更新パネル内にあり、ポストバックしていません。ボタンをクリックするたびに完全なポストバックが発生しますが、ボタンは更新パネルにあります。asynpostback トリガーを使用してみました。その場合、サーバー側のメッセージは表示されません。そのメッセージも欲しい。

私のコードは次のとおりです。

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true">
    </asp:ScriptManager>
    <table align="center" style="border: thin solid #FF0000" width="80%">
        <tr>
            <th colspan="2" align="center" bgcolor="Black" style="color: #FFFFFF">
                Schedule New Batch
            </th>
        </tr>
        <tr>
            <td colspan="2" align="center">
                <div>
                    <asp:Label ID="lblError" runat="server" Style="font-weight: 700; color: #FF0000;"
                        Text="Label" Visible="False"></asp:Label>
                    <asp:Label ID="lblSucess" runat="server" Style="font-weight: 700; color: #006600;
                        background-color: #FFFFFF;" Text="Label" Visible="False"></asp:Label>
                </div>
            </td>
        </tr>
        <tr>
            <td colspan="2">
                &nbsp;
            </td>
        </tr>
        <tr>
            <td class="style44" align="right">
                Technology<span class="style23">*</span> :
            </td>
            <td class="style45">
                <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                    <ContentTemplate>
                        <asp:DropDownList ID="ddlTechnology" runat="server" Width="155px" Class="valid" OnSelectedIndexChanged="ddlTechnology_SelectedIndexChanged"
                            AutoPostBack="True" Height="23px">
                        </asp:DropDownList>
                    </ContentTemplate>
                </asp:UpdatePanel>
            </td>
        </tr>
        <tr>
            <td class="style49" align="right">
                Courses<span class="style23">*</span> :
            </td>
            <td class="style50">
                <asp:UpdatePanel ID="UpdatePanel2" runat="server">
                    <ContentTemplate>
                        <asp:DropDownList ID="ddlCourse" runat="server" Width="155px" Class="valid" OnSelectedIndexChanged="ddlCourse_SelectedIndexChanged"
                            AutoPostBack="True" Height="23px">
                        </asp:DropDownList>
                    </ContentTemplate>
                </asp:UpdatePanel>
            </td>
        </tr>
        <tr>
            <td class="style9" align="right">
                Faculty<span class="style23">*</span> :
            </td>
            <td class="style47">
                <asp:UpdatePanel ID="UpdatePanel3" runat="server">
                    <ContentTemplate>
                        <asp:DropDownList ID="ddlFaculty" runat="server" Width="155px" Class="valid" OnSelectedIndexChanged="ddlFaculty_SelectedIndexChanged"
                            AutoPostBack="True" Height="23px">
                        </asp:DropDownList>
                    </ContentTemplate>
                </asp:UpdatePanel>
            </td>
        </tr>
        <tr>
            <td class="style44" align="right">
                Timing<span class="style24">*</span> :
            </td>
            <td class="style45">
                <asp:UpdatePanel ID="UpdatePanel4" runat="server">
                    <ContentTemplate>
                        <asp:DropDownList ID="ddlTiming" runat="server" Width="155px" Height="23px" AutoPostBack="True"
                            Class="valid" OnSelectedIndexChanged="ddlTiming_SelectedIndexChanged">
                        </asp:DropDownList>
                        <asp:Button ID="btnAdd" runat="server" Text="Add" />
                        <cc1:modalpopupextender id="btnAdd_ModalPopupExtender" runat="server" cancelcontrolid="btnCancleInsertTime"
                            dynamicservicepath="" enabled="True" popupcontrolid="Panel1" targetcontrolid="btnAdd">
                </cc1:modalpopupextender>
                    </ContentTemplate>
                </asp:UpdatePanel>
            </td>
        </tr>
        <tr>
            <td class="style44" align="right">
                Start Date<span class="style23">*</span> :
            </td>
            <td class="style45">
                <asp:UpdatePanel ID="UpdatePanel6" runat="server">
                    <ContentTemplate>
                        <asp:TextBox ID="txtInsertdate" runat="server" Width="150px" Height="16px" Class="valid"></asp:TextBox>
                        <cc1:calendarextender id="CalendarExtender1" runat="server" targetcontrolid="txtInsertdate"
                            format="yyyy-MM-dd">
                </cc1:calendarextender>
                    </ContentTemplate>
                </asp:UpdatePanel>
            </td>
        </tr>
        <tr>
            <td class="style51">
                &nbsp;
            </td>
            <td class="style45">
                &nbsp;
            </td>
        </tr>
        <tr>
            <td>
                <div style="text-align: right">
                    <asp:Button ID="btnSchedule" runat="server" Text="Schedule" Style="font-weight: 700;
                        margin-left: 0px;" Width="81px" Height="24px" OnClick="btnSchedule_Click" />
                </div>
            </td>
            <td>
                <asp:UpdatePanel ID="UpdatePanel5" runat="server">
                    <ContentTemplate>
                        <asp:Button ID="btnreset" runat="server" OnClick="btnreset_Click" Style="font-weight: 700"
                            Text="Reset" Width="67px" CausesValidation="False" UseSubmitBehavior="false" />
                    </ContentTemplate>
                    <Triggers>
                        <asp:PostBackTrigger ControlID="btnreset" />
                    </Triggers>
                </asp:UpdatePanel>
            </td>
        </tr>
        <tr>
            <td colspan="3">
                <asp:Panel ID="Panel1" runat="server" aline="center">
                    <table style="border: thin solid #FF0000; background: #7F8778">
                        <tr>
                            <th class="style53">
                                Please Add a Time
                            </th>
                        </tr>
                        <tr>
                            <td align="center" style="color: #FF0000" class="style53">
                                <asp:TextBox ID="txtInsertTime" runat="server" Width="124px"></asp:TextBox>
                                &nbsp; EX: 09:15AM
                            </td>
                        </tr>
                        <tr>
                            <asp:UpdatePanel ID="UpdatePanel7" runat="server">
                                <ContentTemplate>
                                    <td align="center" class="style53">
                                        <asp:Button ID="btnInsertTime" runat="server" Text="Add Time" Width="73px" OnClientClick="return InsertTime()"
                                            OnClick="btnInsertTime_Click" class="cancel" />
                                        &nbsp; &nbsp;
                                        <asp:Button ID="btnCancleInsertTime" Text="Cancel" Width="55px" runat="server" class="cancel" />
                                    </td>
                                </ContentTemplate>
                            </asp:UpdatePanel>
                        </tr>
                    </table>
                </asp:Panel>
            </td>
        </tr>
    </table>
    <br />
    </form>
</asp:Content>
4

1 に答える 1

4

Visual Studio 2010、.NET Framework 4.0 を使用して、空白のソリューションでコードを試しました。以下を変更すると、ボタンからの完全なポストバックを回避できます。

AsyncPostBackTriger各ボタンとSelectedIndexChangedDropDownListsの Click イベントのプロパティを追加しました。また、UpdatePanel プロパティChildrenAsTriggers="false"UpdateMode="Conditional". すべての UpdatePanel に対して同じアプローチに従うと、うまくいきます。

<asp:UpdatePanel ID="UpdatePanel4" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="ddlTiming" EventName="SelectedIndexChanged" />
        <asp:AsyncPostBackTrigger ControlID="btnAdd" EventName="Click" />
    </Triggers>
    <ContentTemplate>

        <asp:DropDownList ID="ddlTiming" runat="server" Width="155px" Height="23px" AutoPostBack="True"
            Class="valid" OnSelectedIndexChanged="ddlTiming_SelectedIndexChanged">
        </asp:DropDownList>
        <asp:Button ID="btnAdd" runat="server" Text="Add" />
        <cc1:modalpopupextender id="btnAdd_ModalPopupExtender" runat="server" cancelcontrolid="btnCancleInsertTime"
            dynamicservicepath="" enabled="True" popupcontrolid="Panel1" targetcontrolid="btnAdd">
        </cc1:modalpopupextender>
    </ContentTemplate>
</asp:UpdatePanel>

Scheduleボタンが更新パネル内にないことに気付いたので、明らかにページ全体のポストバックが発生していました。

于 2013-03-19T13:37:02.177 に答える