web-dev-qa-db-ja.com

(更新パネルの)ドロップダウンリストにより、完全なポストバックが発生します。

AJAXとASP.NET3.5に問題があります:(同じものを別のページで使用していて、そこでは正常に動作するため、問題は本当に奇妙ですが、これについてはページ、これは機能していません。

これが私が持っているものです:

    <asp:UpdatePanel ID="upMain" runat="server" UpdateMode="Conditional" Visible="true" RenderMode="Inline">
                <ContentTemplate>
<asp:DropDownList ID="ddlNewService_PortTelco" runat="server" Width="250" CssClass="dropdown" AutoPostBack="true" OnSelectedIndexChanged="Provision_PortedTelcoChanged"></asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>

ドロップダウンの前の途中に、1つのDIV(html 1)があり、次にいくつかのasp:Panelsがあります。なぜこれがFULL POST BACK?!

何か案は ?ありがとう

10
user259119

私は同じ問題を抱えていました...ここにコピーされたコードには表示されていませんが、updatepanel内にClientIDMode = Staticのコントロールがないことを確認してください....それらを作成してください- 継承

少なくともポストバックをトリガーする可能性のあるすべてのコントロール

18
robert

AutoPostBacktrueに設定されたドロップダウンリストがあります。そのため、必要に応じて、AsyncPostBackの代わりにポストバックします。

ドロップダウンリストからAutoPostBack=trueを削除し、UpdatePanelセットのAsyncトリガーをドロップダウンリストとそのeventname="SelectedIndexChanged"に設定します。

5
HomerJones

私も同じ問題を抱えています...

WEB.CONFIGを確認してください

<xhtmlConformance mode="Legacy"/>

この行のために..そしてそれを削除するだけです!!

私のために働いた。ありがとう http://andrew-murphy.co.uk/?p=152

4
Sin

プログラミングスキルが不足していることをお詫びします:|それはすべて常に機能していましたが、アクションページの1つがPOST BACKED、そうでなかったとき)のように「見えた」ためです。なんて残念です!!!

お時間を無駄にしてすみません!

2
user259119

Autopostback="true"およびClientIdMode="Static"を持つaspコンポーネントがある場合は、トリガーを使用する必要があります。

このような:

<asp:UpdatePanel ID="upPrinceOffuce" runat="server">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="ddlPrintOffice" EventName="SelectedIndexChanged" />
    </Triggers>
    <ContentTemplate>
         <asp:DropDownList ID="ddlPrintOffice" runat="server" ClientIDMode="Static" AutoPostBack="true" ...blah blah
</asp:DropDownList>
    </ContentTemplate>
</asp:UpdatePanel>
2
mRizvandi

ドロップダウンをどのようにバインドしますか?あなたが提供したコードは、静的アイテムで私の側で機能します。おそらく、問題を引き起こしているのは他のコントロールの何かです。

UpdatePanelのUpdateModeプロパティが条件付きに設定されていることに気付きましたが、トリガーを定義していません。ドロップダウンがselectedIndexChangedイベントをトリガーしたときに、更新パネルが非同期ポストバックを実行するように明示的に設定してみてください。次のマークアップのようなものを使用できます。

<asp:UpdatePanel ID="upMain" runat="server" UpdateMode="Conditional" Visible="true"
    RenderMode="Inline">
    <ContentTemplate>
        <asp:DropDownList ID="ddlNewService_PortTelco" runat="server" Width="250" 
            AutoPostBack="true" OnSelectedIndexChanged="Provision_PortedTelcoChanged">
        </asp:DropDownList>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="ddlNewService_PortTelco" EventName="SelectedIndexChanged" />
    </Triggers>
</asp:UpdatePanel>
1
Genady Sergeev

AutoPostBack属性をtrueに設定すると、部分的なポストバックが発生するのに十分なはずですが、それは発生せず、正しく説明したように、代わりに完全なポストバックがトリガーされます。

次の回避策は私のために働きます:

  1. AutoPostBack属性を削除します。
  2. 「onchange」クライアント側イベントを使用してポストバックをトリガーします。

元のDropDownListは次のようになります。

<asp:DropDownList ID="ddlNewService_PortTelco" runat="server" Width="250" CssClass="dropdown" OnChange="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(this.name, '', true, '', '', false, true))" OnSelectedIndexChanged="Provision_PortedTelcoChanged"></asp:DropDownList>

WebForm_PostBackOptionsパラメーターの詳細については、以下を参照してください。

function WebForm_PostBackOptions(eventTarget, eventArgument, validation, validationGroup, actionUrl, trackFocus, clientSubmit)

http://msdn.Microsoft.com/en-us/library/system.web.ui.postbackoptions_members(v = VS.90).aspx

1
JCallico

ドロップダウンリストの自動ポストバック属性がtrueに設定されているときに同じ問題が発生し、ドロップダウンリストIDをupdatepanelトリガーに追加することで問題を修正しました

0
user1629842

AutoID値をClientIDModeプロパティに設定します。それは私のために働いた。ブラウザ(Google chromeとFirefox))で動作が異なります。

0
Olsi

私はこの問題を抱えていました。ドロップダウンリストはHTMLテーブル内にあり、更新パネルを2つの個別の行にラップしました。 2行だけでなく、テーブル全体に更新パネルをラップすることで問題を修正しました。

0
myQwil

この問題を修正する1つの代替方法は次のとおりです。

ライブラリを宣言する

using AjaxControlToolkit;

次に、これらの行で何かを行うことができます

private void InitControl()
{        
            //FIX - DROP DOWN
            ToolkitScriptManager scrManager = (ToolkitScriptManager)Page.Master.Controls[0].Controls[0].FindControl("manScript");
            scrManager.RegisterAsyncPostBackControl(ddlNewService_PortTelco);
}
0
Scriptworks