CopyPastor

Detecting plagiarism made easy.

Score: -1; Reported for: Open both answers

Possible Plagiarism

Reposted on 2013-06-11

Original Post

Original - Posted on 2013-02-24



            
Present in both answers; Present only in the new answer; Present only in the old answer;

this may help.
public static class ControlExtensions { /// <summary> /// recursively finds a child control of the specified parent. /// </summary> /// <param name="control"></param> /// <param name="id"></param> /// <returns></returns> public static Control FindControlRecursive(this Control control, string id) { if (control == null) return null; //try to find the control at the current level Control ctrl = control.FindControl(id);
if (ctrl == null) { //search the children foreach (Control child in control.Controls) { ctrl = FindControlRecursive(child, id);
if (ctrl != null) break; } } return ctrl; } }
public void Page_Load(object sender, EventArgs e) { //call the recursive FindControl method Control ctrl = this.FindControlRecursive("my_control_id"); }
[This][1] article describes how to find control recursively by type, but the it implementation contains one flaw that leads to losing the "founded" control
Below is presented the fixed version:
/// <summary> /// Find control (recursively) by type /// (http://weblogs.asp.net/eporter/archive/2007/02/24/asp-net-findcontrol-recursive-with-generics.aspx) /// </summary> /// <typeparam name="T"></typeparam> /// <param name="controls"></param> /// <returns></returns> public static T FindControl<T>(System.Web.UI.ControlCollection controls) where T : class { T found = default(T); if (controls != null && controls.Count > 0) { for (int i = 0; i < controls.Count; i++) { if (found != null) break; if (controls[i] is T) { found = controls[i] as T; break; } found = FindControl<T>(controls[i].Controls); } } return found; }

[1]: http://weblogs.asp.net/eporter/archive/2007/02/24/asp-net-findcontrol-recursive-with-generics.aspx

        
Present in both answers; Present only in the new answer; Present only in the old answer;