ダイナミックに作成されたコントロール(ダイナミックコントロールの子)のネストされたコントロールを取得するにはどうすればよいですか? FindControl()メソッドは、私が信じるTopLevel動的コントロールのみを扱うため、機能しません。PostBackの動的にネストされたコントロールのFindControl()メソッド
1
A
答えて
3
あなたはあなたのコントロールを再帰する必要があります(C#コード)
public static Control FindControl(Control parentControl, string fieldName)
{
if (parentControl != null && parentControl.HasControls())
{
Control c = parentControl.FindControl(fieldName);
if (c != null)
{
return c;
}
// if arrived here, then not found on this level, so search deeper
// loop through collection
foreach (Control ctrl in parentControl.Controls)
{
// any child controls?
if (ctrl.HasControls())
{
// try and find there
Control c2 = FindControl(ctrl, fieldName);
if (c2 != null)
{
return c2; // found it!
}
}
}
}
return null; // found nothing (in this branch)
}
0
これは私が過去に使用してきた拡張メソッドです。拡張メソッドとして使用すると、コードが少し表現力豊かになることがわかりましたが、それは単に好みです。
/// <summary>
/// Extension method that will recursively search the control's children for a control with the given ID.
/// </summary>
/// <param name="parent">The control who's children should be searched</param>
/// <param name="controlID">The ID of the control to find</param>
/// <returns></returns>
public static Control FindControlRecursive(this Control parent, string controlID)
{
if (!String.IsNullOrEmpty(parent.ClientID) && parent.ClientID.Equals(controlID)) return parent;
System.Web.UI.Control control = null;
foreach (System.Web.UI.Control c in parent.Controls)
{
control = c.FindControlRecursive(controlID);
if (control != null)
break;
}
return control;
}
関連する問題
- 1. にFindControl()とネストされたコントロールが
- 2. 動的に生成されたコントロールでFindControlを使用する
- 3. ネストされたコントロールのバリデーション
- 4. PostbackのRowsコレクションにTableRowsが動的に追加されました
- 5. ウィザードに動的にロードされたコントロール
- 6. 動的に生成されたWebUserコントロール
- 7. 動的にネストされた視点
- 8. PostBackデータを動的に追加されたUserControl(.NET)にプルする方法は?
- 9. ネストされたメソッド
- 10. ネストされたコントロール+上部、左のプロパティ
- 11. PanelBars /ネストされたコントロールへのアクセスMVC
- 12. 複数のネストされたDatagridviewコントロール(フリーコントロール)
- 13. FindControlを使用したDevxpress ASPxSchedulerアクセスコントロール
- 14. 動的に生成されたネストされたタプル
- 15. ASP.NET WebForms:GridViewのTableCellにコントロールを動的に追加し、PostBackでそれらを復元する
- 16. ObjectMapper - ネストされた動的キー
- 17. Rails 3.1動的ネストされたフォーム
- 18. オーバーロードされたメソッドのJava動的キャスト
- 19. 階層的状態マシン:ネストされたマシンコールの親メソッドのon_enter
- 20. 動的に追加されたコントロールがレンダリングされない、silverlight
- 21. ASP.Netの動的に作成されたコントロールのイベント
- 22. グリッド内に動的に追加されたコントロールを移動 - WPF
- 23. ネストされたコントロールのコントロールがINamingContainerを実装している場合にのみFindControlを使用する必要がありますか?
- 24. ネストされた検索メソッド
- 25. ネストされたメソッド、ベストプラクティス
- 26. Java - 再帰的メソッドとネストされたイテレータのConcurrentModificationException
- 27. 動的に追加されたコントロールのバリデータを削除する
- 28. 動的に作成されたコントロールのアンカーを設定する
- 29. 動的に作成されたコントロールのIDはasp.net
- 30. 動的に作成されたコントロールへのバインド
thanxこれはfieldNameパラメーターの[ClientID]と[ID]の両方で機能します。 – TroyS