2012-03-19 3 views
0

私は、ボタンをクリックした後にページを送信している更新パネルを持っています。コードはupdatepanelは一度動作してからページを送信します(asp.net c#)

<asp:ScriptManager ID="MainScriptManager" runat="server" EnablePageMethods="true" /> 

<asp:UpdatePanel ID="pnlCalendar" runat="server"> 
    <ContentTemplate> 
     <asp:PlaceHolder ID="panCalendarHolder" runat="server"></asp:PlaceHolder> 
     <br /><br /> 
     <asp:Button id="btnViewWholeWeek" text="View Whole Week" runat="server" CssClass="normal-button" OnClick="viewWholeWeek" CausesValidation="false"></asp:Button> 
    </ContentTemplate> 
</asp:UpdatePanel> 

です。プレス上の関数には、問題を引き起こしているかどうかを調べるためにテストしたコードは含まれていません。これはとにかくです

protected void viewWholeWeek(object sender, EventArgs e) { 
    HtmlContainerControl paraDayName = (HtmlContainerControl)new HtmlGenericControl("p"); 
    paraDayName.InnerHtml = "test"; 
    panCalendarHolder.Controls.Add(paraDayName); 
} 

私は上記のボタンを1回押します。これは動作します - アップデートパネルをリフレッシュします。私はもう一度押すとページを送信します。私は<form id="frmMain" runat="server"></form>タグの中にすべてを持っています....

どのようなアイデアですか?

+0

「ページを提出する」とはどういう意味ですか?すべてのポストバックは非同期でもページを送信します。最新のすべてのポストバックの動的に作成されたすべてのコントロールを、page_loadで手動で再作成する必要があることをご存知ですか?それ以外の場合は再作成されません。 –

+0

ボタンを最初にクリックすると非同期になり、2回目にクリックするとページ全体が送信されます。つまり、更新パネルではありません。ボタンは動的に作成されません。標準HTMLにあります。 –

答えて

0

私はあなたのコードを試しましたが、そこにはまったく問題はありません...おそらくあなたは私たちに詳細を教えてください! Page_load関数では何をしていますか?

+0

私はこれを答えとして受け入れました。なぜなら、page_loadのコードを見直すよう促したからです。私は変数が設定されていない場合、リダイレクトを強制するトリッキーをやっていました。 IsPostBackは救助活動をしています。 –

+0

私は** IsPostBack **をほぼすべてのページで必須のものと考えています:)私の簡単なコメントはあなたを助けてくれてうれしいです –

0

更新パネルクラスでupdateMode = Conditionalを試してみてください。デフォルトで知っているとおり、値は常にです。

0

これは、この定型的なコードを追加することで固定されているいくつかの一般的なバグです:

private void EnsureUpdatePanelFixups() 
{ 
    if (this.Page.Form != null) 
    { 
     string formOnSubmitAtt = this.Page.Form.Attributes["onsubmit"]; 

     if (formOnSubmitAtt == "return _spFormOnSubmitWrapper();") 
     { 
      this.Page.Form.Attributes["onsubmit"] = "_spFormOnSubmitWrapper();"; 
     } 
    } 

    ScriptManager.RegisterStartupScript(this, typeof(ThisClassTypeGoesHere), "SomeStringToBeTheKey", "_spOriginalFormAction = document.forms[0].action;_spSuppressFormOnSubmitWrapper=true;", true); 
} 

は、すべてのポストバック呼び出されることを確認してください。私は同僚からそれを手に入れたので、ソースをサイトに入れることはできません。申し訳ありません。

+0

それはsharepoint特有のものではありませんか? –

+0

私は実際にはASPだけではなく、おそらくSharePointで働いています。 – Servy

関連する問題