VisualStudio2010のsharepoint 2010 visual webpartを3つのユーザーコントロール(.ascx)で作成しました。現在ロードされているusercontrolのボタンをクリックすることでwebpartのusercontrolを動的に変更したいと思います。主な問題は、buttonClickイベントは、CreateChildControlsメソッドの実行後(ViewDataを使用して必要なusercontrolを取得しようとする)にのみ処理されるという事実にあります。誰もこの問題を解決するために私を助けてもらえますか?これを行うにはsharepoint webcontrol with many usercontrols
答えて
方法は、ボタンを順番に次を呼び出すことのJavaScript関数を呼び出す必要があり、次のようになります。
__doPostBack('LoadControl', 'ControlName');
あなたはその後、内にロードするように制御するかを調べるためにサーバー変数__EVENTTARGETと__EVENTARGUMENTを使用することができますCreateChildControlsイベントハンドラ。
リーの反応は基本的に正しいので、うまくいくかもしれません。しかし、あなたはただ__doPostBack
を使用して、それが常にあなたのために "魔法のよう"になるということに頼るべきではありません。 Leeが指摘したこの方法と変数は、ASP.NETの内部であり、直接使用するためのものではありません。また、あなたのページにポストバッキングコントロールを置かない場合、このメソッドは実際にはでなく、が生成され、コードを呼び出すと失敗します。
幸いにも、一般的なポストバックを引き起こして処理するコードは非常に簡単です。
public class MyWebPart : WebPart, IPostBackEventHandler {
protected override void CreateChildControls() {
Control clickable = ...; // Create a clickable control.
// Get JavaScript expression to send postback "test" to "this" web part.
var postBack = Page.ClientScript.GetPostBackEventReference(this, "test");
clickable.Attributes["onclick"] = postBack + "; return false";
Controls.Add(clickable);
}
void IPostBackEventHandler.RaisePostBackEvent(string eventArgument) {
if (eventArgument == "test") { // Recognize and handle our postback.
...
}
}
}
:あなたはWebパーツ自体にポストバックを標的とする - の代わりに(それゆえ、あなたのハンドラが呼び出される前にCreateChildControls
への呼び出しにトリガされる前に構築する必要がある)入力コントロールの組み込みのイベントハンドラを使用しますGetPostBackEventReference
は必要なJavaScript式を生成します。 (実際には、それを呼び出すだけで__doPostBack
がページに「魔法のように」表示されます)。RaisePostBackEvent
はOnLoad
とOnPreRender
の間で呼び出されます。それ以前に子コントロールを作成しないようにしてください(例えば、EnsureChildControls
などを呼び出すなど)。複数のポストバック制御が必要な場合は、eventArguments
パラメータを使用してパラメータを変更することができます。
ユーザーコントロールにはポストバックトリガが必要で、Webパーツには直接接続しないでください。私はそれを単純に保つためにWebパーツに示しました。 GetPostBackEventReference
の結果は、呼び出し時に適切なページインスタンスとWebパーツインスタンスを使用することを条件として、任意のコントロールに配置できます。
---フェルダー
この問題もありました。
(ハンドラ内のコードを実行した後)イベントハンドラに
this.Page.Response.Redirect(HttpContext.Current.Request.Url.AbsoluteUri, true);
よろしく、
ペドロ
これを追加- 1. for cor.test with many categories
- 2. Symofny2 Query Builder leftJoin with many relationship
- 3. Django Many To Filter with filter
- 4. OneNote API with SharePointドキュメントライブラリ
- 5. Access 2007 with SharePoint 2007
- 6. Laravel Many To Many Save
- 7. WebControlのUserControlイベント
- 8. .net usercontrols
- 9. Doctrine many to many [Semantical Error]
- 10. Django Many Many Field
- 11. Laravel - Many To Many
- 12. Rails Many Many Search
- 13. Many to Many Merge
- 14. Visual Studio Team Services with SharePoint online
- 15. Telerik Kendo UI with SharePointリストアイテム
- 16. SharePoint Foundation 2010とBDC with SQL
- 17. Power BI with SharePoint Hosted Apps
- 18. ASP.NET WebControl Proxyは、SharePoint上でホストされ、Javaアプリケーションと対話します...?
- 19. yii2 many to many where節
- 20. sequelizejs eager many to many
- 21. Silverstripe 3.4 sqlquery many-many
- 22. Doctrine Many To Many Relation
- 23. Many To Many jpa stackoverflow
- 24. フラスコrestfull many-to-many
- 25. .net内のusercontrols
- 26. クラスライブラリのUserControls
- 27. UserControlsのDataContext
- 28. Spring jpa many to many lazy delete
- 29. eloquent id in in many to many
- 30. Hibernate many to many proper delete