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. Laravel Many To Many Save
- 2. Access 2007 with SharePoint 2007
- 3. Rails Many Many Search
- 4. Telerik Kendo UI with SharePointリストアイテム
- 5. SharePoint Foundation 2010とBDC with SQL
- 6. Linq toエンティティmany-to-many join
- 7. NHibernate many to many backward query
- 8. python-storm orm many-to-many
- 9. .net usercontrols
- 10. WebControlのUserControlイベント
- 11. ASP.NET WebControl Proxyは、SharePoint上でホストされ、Javaアプリケーションと対話します...?
- 12. グループメンバシップのチェック(DjangoのMany to Many)
- 13. many-to-manyをクエリする方法は?
- 14. UserControlsのDataContext
- 15. クラスライブラリのUserControls
- 16. .net内のusercontrols
- 17. Uploadify with Sharepointと.netを使用する
- 18. SilverLight with SharePointの非同期コード
- 19. Dynamic UserControls on PostBack Asp.Net
- 20. UserControlsのWPF配列
- 21. Rails Many Through Through
- 22. one-to-many IPC
- 23. WebControlのコントロールコレクションをオーバーライドする
- 24. Python IPC one to many
- 25. SQL Sever Pivot Many Columns
- 26. mongodb many inserts \ updates performance
- 27. Rails Many to Oneアソシエーション
- 28. emacsとgdb-many-windows
- 29. Rails、One Model、Many Screens
- 30. hibernate insert one to many