internal Control FindChildControl(string strid, Control ct) { if (ct.ID == strid) { return ct; } else { if (ct.HasControls()) { foreach (Control ctchild in ct.Controls) { Control ctrtn = FindChildControl(strid, ctchild); if (ctrtn != null) { return ctrtn; } } return null; } else { return null; } } }
public static void ClearControls(ref Control control) { if (control == null) return; if (control is TextBox) { ((TextBox)control).Text = string.Empty; return; } else if (control is DropDownList) { ((DropDownList)control).SelectedIndex = 0; return; } if (control.HasControls()) { foreach (Control c in control.Controls) { Control ctrl = c; ClearControls(ref ctrl); } } }
private Control GetWebValidateBox(Control ct) { if (ct is WebValidate) { return ct; } else if (ct.HasControls()) { foreach (Control ctchild in ct.Controls) { if (ctchild is WebValidate) { return ctchild; } else { GetWebValidateBox(ctchild); } } return null; } else { return null; } }
public static void ClearForm(Control container, FormClearOptions option, bool check_nc) { try { switch (option) { case FormClearOptions.ClearAll: if (check_nc) { if (container.ID != null) if (container.ID.EndsWith("_nc")) break; } if (container.GetType().Equals(typeof(TextBox))) { TextBox txtBox = ((TextBox)container); txtBox.Text = string.Empty; } else if (container.GetType().Equals(typeof(DropDownList))) { DropDownList ddl = ((DropDownList)container); ddl.SelectedValue = string.Empty; } else if (container.GetType().Equals(typeof(CheckBox))) { CheckBox chk = ((CheckBox)container); chk.Checked = false; } else if (container.GetType().Equals(typeof(RadioButtonList))) { RadioButtonList rbl = ((RadioButtonList)container); rbl.SelectedIndex = -1; } else if (container.GetType().Equals(typeof(RadioButton))) { RadioButton rb = ((RadioButton)container); rb.Checked = false; } else if (container.HasControls()) { foreach (Control ctrl in container.Controls) ClearForm(ctrl, option, check_nc); } break; default: break; } } catch (Exception ex) { throw ex; } }
private static string Crawl(Control objControl, int intLevel) { string result = new string('-',intLevel) + objControl.ClientID + "<br>"; if(objControl.HasControls()) { foreach(Control c in objControl.Controls) result += Crawl(c,intLevel + 1); } return result; }
public static void SetViewState(Control container) { container.ViewStateMode= ViewStateMode.Disabled; if (container.HasControls()) { foreach(Control ctrl in container.Controls) { Control control = ctrl; SetViewState(control); } } }
public static Control[] FlattenHierachy(Control root) { List<Control> list = new List<Control>(); list.Add(root); if (root.HasControls()) { foreach (Control control in root.Controls) { list.AddRange(FlattenHierachy(control)); } } return list.ToArray(); }
/// <summary> /// Recursively gets every control of the specified root (including root and all it's child controls). /// Returns the controls as an array of Control objects. /// </summary> /// <param name="root">The root control to get child controls for.</param> /// <returns>An array of all the child controls of root.</returns> public static Control[] getAllPageControls(Control root) { List<Control> list = new List<Control>(); list.Add(root); if (root.HasControls()) { foreach (Control control in root.Controls) { list.AddRange(getAllPageControls(control)); } } return list.ToArray(); }
private static Control InjectDependenciesRecursiveInternal(IApplicationContext appContext, Control control) { if (control is LiteralControl) return control; // nothing to do ISupportsWebDependencyInjection diControl = control as ISupportsWebDependencyInjection; if (diControl != null && diControl.DefaultApplicationContext != null) { return control; // nothing to do anymore - control cares for itself and its children } // "intercept" Control to make it DI-aware ControlInterceptor.EnsureControlIntercepted(appContext, control); // if the control is a UserControl, use ApplicationContext from it's physical location IApplicationContext appContextToUse = appContext; UserControl userControl = control as UserControl; if (userControl != null) { appContextToUse = GetControlApplicationContext(appContext, userControl); } // set ApplicationContext instance if (control is IApplicationContextAware) { ((IApplicationContextAware)control).ApplicationContext = appContextToUse; } // inject dependencies using control's context control = (Control)appContextToUse.ConfigureObject(control, control.GetType().FullName); // and now go for control's children if (control.HasControls()) { ControlCollection childControls = control.Controls; int childCount = childControls.Count; for (int i = 0; i < childCount; i++) { Control c = childControls[i]; if (c is LiteralControl) continue; Control configuredControl = InjectDependenciesRecursiveInternal(appContext, c); if (configuredControl != c) { ControlAccessor ac = new ControlAccessor(c.Parent); ac.SetControlAt(configuredControl, i); } } } return control; }
/// <summary> /// Get all page controls, recursively, ignoring irrelevant controls. /// </summary> public static Control[] FlattenHierachy(Control root) { if (IgnoreControl(root)) return new Control[0]; var list = new List<Control>() { root }; if (root.HasControls()) { foreach (Control c in root.Controls) { list.AddRange(FlattenHierachy(c)); } } return list.ToArray(); }
public void HookOnFocus(Control CurrentControl) { //checks if control is one of TextBox, DropDownList, ListBox or Button if ((CurrentControl is TextBox) || (CurrentControl is DropDownList) || (CurrentControl is ListBox) || (CurrentControl is Button)) //adds a script which saves active control on receiving focus //in the hidden field __LASTFOCUS. (CurrentControl as WebControl).Attributes.Add( "onfocus", "try{document.getElementById('__LASTFOCUS').value=this.id} catch(e) {}"); //checks if the control has children if (CurrentControl.HasControls()) //if yes do them all recursively foreach (Control CurrentChildControl in CurrentControl.Controls) HookOnFocus(CurrentChildControl); }
public static int GetVisibleChildrenCount(System.Web.UI.Control container) { if (container == null || (!container.HasControls())) { return(0); } int count = 0; foreach (System.Web.UI.Control control in container.Controls) { if (control.Visible) { count++; } } return(count); }
/// <summary> /// Verifies that <paramref name="ctrl"/> has child controls. /// </summary> public static void HasControls(Control ctrl) { Assert.IsNotNull(ctrl); Assert.IsTrue(ctrl.HasControls(), "Control {0} has no controls", ctrl.ID); }
/// <summary> /// Verifies that <paramref name="ctrl"/> has no child controls. /// </summary> public static void HasNoControls(Control ctrl) { Assert.IsNotNull(ctrl); Assert.IsFalse(ctrl.HasControls(), "Control {0} has child controls", ctrl.ID); }
// Renders hidden variables for IPostBackDataHandlers which are // not displayed due to pagination or secondary UI. /// <include file='doc\XhtmlBasicControlAdapter.uex' path='docs/doc[@for="XhtmlControlAdapter.RenderOffPageVariables"]/*' /> protected void RenderOffPageVariables(XhtmlMobileTextWriter writer, Control control, int page) { if (control.HasControls()) { foreach (Control child in control.Controls) { // Note: Control.Form != null. if (!child.Visible || child == Control.Form.Header || child == Control.Form.Footer) { continue; } MobileControl mobileCtl = child as MobileControl; if (mobileCtl != null) { if (mobileCtl.IsVisibleOnPage(page) && (mobileCtl == ((XhtmlFormAdapter)mobileCtl.Form.Adapter).SecondaryUIControl || null == ((XhtmlFormAdapter)mobileCtl.Form.Adapter).SecondaryUIControl)) { if (mobileCtl.FirstPage == mobileCtl.LastPage) { // Entire control is visible on this page, so no need to look // into children. continue; } // Control takes up more than one page, so it may be possible that // its children are on a different page, so we'll continue to // fall through into children. } else if (mobileCtl is IPostBackDataHandler) { XhtmlControlAdapter adapter = mobileCtl.Adapter as XhtmlControlAdapter; if (adapter != null) { adapter.RenderAsHiddenInputField(writer); } } } RenderOffPageVariables(writer, child, page); } } }
private Control findControl(Control parent, string id) { if (parent.HasControls()) { Control control = parent.FindControl(id); if (control != null) { return control; } foreach (Control control2 in parent.Controls) { control = this.findControl(control2, id); if (control != null) { return control; } } } return null; }
private static void SetControlPageRecursive(Control control, int page) { MobileControl mc = control as MobileControl; if(mc != null) { mc.FirstPage = page; mc.LastPage = page; } if (control.HasControls()) { foreach (Control child in control.Controls) { MobileControl mobileChild = child as MobileControl; if (mobileChild != null) { mobileChild.FirstPage = page; mobileChild.LastPage = page; } else { SetControlPageRecursive(child, page); } } } }
void AddResourceAttributesToControl(Control control, string property, string resourceSet) { if (control is WebControl) { var ctl = control as WebControl; ctl.Attributes["data-resource-id"] = control.ID + "." + property; ctl.Attributes["data-resource-set"] = resourceSet; } else if (control is Literal) // literal and localize don't have wrapping tags so add them { var ctl = control as Literal; ctl.Text = string.Format("<span data-resource-id=\"{0}\" data-resource-set=\"{1}\">" + ctl.Text + "</span>", control.ID + "." + property, resourceSet); } else if (control is HtmlControl) { var ctl = control as HtmlControl; ctl.Attributes["data-resource-id"] = control.ID + "." + property; ctl.Attributes["data-resource-set"] = resourceSet; } else { if (control.HasControls() && !(control is Page || control is HtmlForm)) { control.Controls.AddAt(0, new Literal() { Text = string.Format("<span data-resource-id=\"{0}\" data-resoure-set=\"{1}\">",control.ID + "." + property, resourceSet) }); control.Controls.Add(new Literal() {Text = "</span>" }); } } }
public static void ClearForm(Control container, List<Type> controlTypes) { if (container.GetType().Equals(typeof(Label))) { Label lbl = ((Label)container); } else if (container.HasControls()) { foreach (Control ctrl in container.Controls) ClearForm(ctrl, controlTypes); } }
/// <summary> /// <para>ProcessControl peforms the high level localization for a single control and optionally it's children.</para> /// </summary> /// <param name="control">Control to find the AttributeCollection on</param> /// <param name="affectedControls">ArrayList that hold the controls that have been localized. This is later used for the removal of the key attribute.</param> /// <param name="includeChildren">If true, causes this method to process children of this controls.</param> /// <param name="resourceFileRoot">Root Resource File.</param> internal void ProcessControl(Control control, ArrayList affectedControls, bool includeChildren, string resourceFileRoot) { if (!control.Visible) return; //Perform the substitution if a key was found string key = GetControlAttribute(control, affectedControls, Localization.KeyName); if (!string.IsNullOrEmpty(key)) { //Translation starts here .... string value = Localization.GetString(key, resourceFileRoot); if (control is Label) { var label = (Label)control; if (!String.IsNullOrEmpty(value)) { label.Text = value; } } if (control is LinkButton) { var linkButton = (LinkButton)control; if (!String.IsNullOrEmpty(value)) { MatchCollection imgMatches = Regex.Matches(value, "<(a|link|img|script|input|form).[^>]*(href|src|action)=(\\\"|'|)(.[^\\\"']*)(\\\"|'|)[^>]*>", RegexOptions.IgnoreCase); foreach (Match match in imgMatches) { if ((match.Groups[match.Groups.Count - 2].Value.IndexOf("~", StringComparison.Ordinal) != -1)) { string resolvedUrl = Page.ResolveUrl(match.Groups[match.Groups.Count - 2].Value); value = value.Replace(match.Groups[match.Groups.Count - 2].Value, resolvedUrl); } } linkButton.Text = value; if (string.IsNullOrEmpty(linkButton.ToolTip)) { linkButton.ToolTip = value; } } } if (control is HyperLink) { var hyperLink = (HyperLink)control; if (!String.IsNullOrEmpty(value)) { hyperLink.Text = value; } } if (control is ImageButton) { var imageButton = (ImageButton)control; if (!String.IsNullOrEmpty(value)) { imageButton.AlternateText = value; } } if (control is Button) { var button = (Button)control; if (!String.IsNullOrEmpty(value)) { button.Text = value; } } if (control is HtmlButton) { var button = (HtmlButton)control; if (!String.IsNullOrEmpty(value)) { button.Attributes["Title"] = value; } } if (control is HtmlImage) { var htmlImage = (HtmlImage)control; if (!String.IsNullOrEmpty(value)) { htmlImage.Alt = value; } } if (control is CheckBox) { var checkBox = (CheckBox)control; if (!String.IsNullOrEmpty(value)) { checkBox.Text = value; } } if (control is BaseValidator) { var baseValidator = (BaseValidator)control; if (!String.IsNullOrEmpty(value)) { baseValidator.ErrorMessage = value; } } if (control is Image) { var image = (Image)control; if (!String.IsNullOrEmpty(value)) { image.AlternateText = value; image.ToolTip = value; } } } //Translate listcontrol items here if (control is ListControl) { var listControl = (ListControl)control; for (int i = 0; i <= listControl.Items.Count - 1; i++) { AttributeCollection attributeCollection = listControl.Items[i].Attributes; key = attributeCollection[Localization.KeyName]; if (key != null) { string value = Localization.GetString(key, resourceFileRoot); if (!String.IsNullOrEmpty(value)) { listControl.Items[i].Text = value; } } if (key != null && affectedControls != null) { affectedControls.Add(attributeCollection); } } } //UrlRewriting Issue - ResolveClientUrl gets called instead of ResolveUrl //Manual Override to ResolveUrl if (control is Image) { var image = (Image)control; if (image.ImageUrl.IndexOf("~", StringComparison.Ordinal) != -1) { image.ImageUrl = Page.ResolveUrl(image.ImageUrl); } //Check for IconKey if (string.IsNullOrEmpty(image.ImageUrl)) { string iconKey = GetControlAttribute(control, affectedControls, IconController.IconKeyName); string iconSize = GetControlAttribute(control, affectedControls, IconController.IconSizeName); string iconStyle = GetControlAttribute(control, affectedControls, IconController.IconStyleName); image.ImageUrl = IconController.IconURL(iconKey, iconSize, iconStyle); } } //UrlRewriting Issue - ResolveClientUrl gets called instead of ResolveUrl //Manual Override to ResolveUrl if (control is HtmlImage) { var htmlImage = (HtmlImage)control; if (htmlImage.Src.IndexOf("~", StringComparison.Ordinal) != -1) { htmlImage.Src = Page.ResolveUrl(htmlImage.Src); } //Check for IconKey if (string.IsNullOrEmpty(htmlImage.Src)) { string iconKey = GetControlAttribute(control, affectedControls, IconController.IconKeyName); string iconSize = GetControlAttribute(control, affectedControls, IconController.IconSizeName); string iconStyle = GetControlAttribute(control, affectedControls, IconController.IconStyleName); htmlImage.Src = IconController.IconURL(iconKey, iconSize, iconStyle); } } //UrlRewriting Issue - ResolveClientUrl gets called instead of ResolveUrl //Manual Override to ResolveUrl if (control is HyperLink) { HyperLink ctrl; ctrl = (HyperLink)control; if ((ctrl.NavigateUrl.IndexOf("~", StringComparison.Ordinal) != -1)) { ctrl.NavigateUrl = Page.ResolveUrl(ctrl.NavigateUrl); } if ((ctrl.ImageUrl.IndexOf("~", StringComparison.Ordinal) != -1)) { ctrl.ImageUrl = Page.ResolveUrl(ctrl.ImageUrl); } //Check for IconKey if (string.IsNullOrEmpty(ctrl.ImageUrl)) { string iconKey = GetControlAttribute(control, affectedControls, IconController.IconKeyName); string iconSize = GetControlAttribute(control, affectedControls, IconController.IconSizeName); string iconStyle = GetControlAttribute(control, affectedControls, IconController.IconStyleName); ctrl.ImageUrl = IconController.IconURL(iconKey, iconSize, iconStyle); } } //Process child controls if (includeChildren && control.HasControls()) { var objModuleControl = control as IModuleControl; if (objModuleControl == null) { PropertyInfo pi = control.GetType().GetProperty("LocalResourceFile"); if (pi != null && pi.GetValue(control, null) != null) { //If controls has a LocalResourceFile property use this IterateControls(control.Controls, affectedControls, pi.GetValue(control, null).ToString()); } else { //Pass Resource File Root through IterateControls(control.Controls, affectedControls, resourceFileRoot); } } else { //Get Resource File Root from Controls LocalResourceFile Property IterateControls(control.Controls, affectedControls, objModuleControl.LocalResourceFile); } } }
private Control GetAllCtrls(string strid, Control ct) { if (ct.ID == strid) { return ct; } else { if (ct.HasControls()) { foreach (Control ctchild in ct.Controls) { Control ctrtn = GetAllCtrls(strid, ctchild); if (ctrtn != null) { return ctrtn; } } return null; } else { return null; } } }
Control FindByType (Control parent, Type type) { if (!parent.HasControls ()) return null; foreach (Control c in parent.Controls) { if (type.IsAssignableFrom (c.GetType ())) return c; Control ret = FindByType (c, type); if (ret != null) return ret; } return null; }
/// <summary> /// Replace any of the contained controls with literals /// </summary> /// <param name="control"></param> private static void PrepareControlForExport(System.Web.UI.Control control) { for (int i = 0; i < control.Controls.Count; i++) { System.Web.UI.Control current = control.Controls[i]; if (current is LinkButton) { control.Controls.Remove(current); if (current.Visible) { control.Controls.AddAt(i, new LiteralControl((current as LinkButton).Text)); } else { control.Controls.AddAt(i, new LiteralControl("")); } } else if (current is ImageButton) { control.Controls.Remove(current); ///control.Controls.AddAt(i, new LiteralControl((current as ImageButton).AlternateText)); control.Controls.AddAt(i, new LiteralControl("")); } else if (current is HyperLink) { control.Controls.Remove(current); control.Controls.AddAt(i, new LiteralControl((current as HyperLink).Text)); } else if (current is DropDownList) { control.Controls.Remove(current); control.Controls.AddAt(i, new LiteralControl((current as DropDownList).SelectedItem.Text)); } else if (current is CheckBox) { control.Controls.Remove(current); control.Controls.AddAt(i, new LiteralControl((current as CheckBox).Checked ? "True" : "False")); } else if (current is TextBox) { control.Controls.Remove(current); control.Controls.AddAt(i, new LiteralControl((current as TextBox).Text)); } else if (current is Label) { control.Controls.Remove(current); if ((current as Label).Text.Equals("*")) { control.Controls.AddAt(i, new LiteralControl("")); } else { control.Controls.AddAt(i, new LiteralControl((current as Label).Text)); } } else if (current is RequiredFieldValidator) { control.Controls.Remove(current); control.Controls.AddAt(i, new LiteralControl("")); } else if (current is CompareValidator) { control.Controls.Remove(current); control.Controls.AddAt(i, new LiteralControl("")); } else if (current is HiddenField) { control.Controls.Remove(current); control.Controls.AddAt(i, new LiteralControl("")); } else if (current is LinkButton) { control.Controls.Remove(current); control.Controls.AddAt(i, new LiteralControl("")); } else if (current is Image) { control.Controls.Remove(current); control.Controls.AddAt(i, new LiteralControl("")); } if (current.HasControls()) { GridViewExportUtil.PrepareControlForExport(current); } } }
// Toggles the editability of the web controls on the page private void ToggleControls(Control c) { if (c.HasControls()) { foreach (Control control in c.Controls) { ToggleControls(control); } } else { if (c.ID != "Title") // Don't let the Title be changeable { var textBox = c as TextBox; if (textBox != null) { textBox.Enabled = !textBox.Enabled; } var checkBox = c as CheckBox; if (checkBox != null) { checkBox.Enabled = !checkBox.Enabled; } } } }
/// <summary> /// <para>ProcessControl peforms the high level localization for a single control and optionally it's children.</para> /// </summary> /// <param name="control">Control to find the AttributeCollection on</param> /// <param name="affectedControls">ArrayList that hold the controls that have been localized. This is later used for the removal of the key attribute.</param> /// <param name="includeChildren">If true, causes this method to process children of this controls.</param> /// <param name="resourceFileRoot">Root Resource File.</param> internal void ProcessControl(Control control, ArrayList affectedControls, bool includeChildren, string resourceFileRoot) { if (!control.Visible) return; //Perform the substitution if a key was found var key = GetControlAttribute(control, affectedControls, Localization.KeyName); if (!string.IsNullOrEmpty(key)) { //Translation starts here .... var value = Localization.GetString(key, resourceFileRoot); LocalizeControl(control, value); } //Translate listcontrol items here var listControl = control as ListControl; if (listControl != null) { for (var i = 0; i <= listControl.Items.Count - 1; i++) { var attributeCollection = listControl.Items[i].Attributes; key = attributeCollection[Localization.KeyName]; if (key != null) { var value = Localization.GetString(key, resourceFileRoot); if (!String.IsNullOrEmpty(value)) { listControl.Items[i].Text = value; } } if (key != null && affectedControls != null) { affectedControls.Add(attributeCollection); } } } //UrlRewriting Issue - ResolveClientUrl gets called instead of ResolveUrl //Manual Override to ResolveUrl var image = control as Image; if (image != null) { if (image.ImageUrl.IndexOf("~", StringComparison.Ordinal) != -1) { image.ImageUrl = Page.ResolveUrl(image.ImageUrl); } //Check for IconKey if (string.IsNullOrEmpty(image.ImageUrl)) { var iconKey = GetControlAttribute(control, affectedControls, IconController.IconKeyName); var iconSize = GetControlAttribute(control, affectedControls, IconController.IconSizeName); var iconStyle = GetControlAttribute(control, affectedControls, IconController.IconStyleName); image.ImageUrl = IconController.IconURL(iconKey, iconSize, iconStyle); } } //UrlRewriting Issue - ResolveClientUrl gets called instead of ResolveUrl //Manual Override to ResolveUrl var htmlImage = control as HtmlImage; if (htmlImage != null) { if (htmlImage.Src.IndexOf("~", StringComparison.Ordinal) != -1) { htmlImage.Src = Page.ResolveUrl(htmlImage.Src); } //Check for IconKey if (string.IsNullOrEmpty(htmlImage.Src)) { var iconKey = GetControlAttribute(control, affectedControls, IconController.IconKeyName); var iconSize = GetControlAttribute(control, affectedControls, IconController.IconSizeName); var iconStyle = GetControlAttribute(control, affectedControls, IconController.IconStyleName); htmlImage.Src = IconController.IconURL(iconKey, iconSize, iconStyle); } } //UrlRewriting Issue - ResolveClientUrl gets called instead of ResolveUrl //Manual Override to ResolveUrl var ctrl = control as HyperLink; if (ctrl != null) { if ((ctrl.NavigateUrl.IndexOf("~", StringComparison.Ordinal) != -1)) { ctrl.NavigateUrl = Page.ResolveUrl(ctrl.NavigateUrl); } if ((ctrl.ImageUrl.IndexOf("~", StringComparison.Ordinal) != -1)) { ctrl.ImageUrl = Page.ResolveUrl(ctrl.ImageUrl); } //Check for IconKey if (string.IsNullOrEmpty(ctrl.ImageUrl)) { var iconKey = GetControlAttribute(control, affectedControls, IconController.IconKeyName); var iconSize = GetControlAttribute(control, affectedControls, IconController.IconSizeName); var iconStyle = GetControlAttribute(control, affectedControls, IconController.IconStyleName); ctrl.ImageUrl = IconController.IconURL(iconKey, iconSize, iconStyle); } } //Process child controls if (!includeChildren || !control.HasControls()) return; var objModuleControl = control as IModuleControl; if (objModuleControl == null) { var pi = control.GetType().GetProperty("LocalResourceFile"); if (pi != null && pi.GetValue(control, null) != null) { //If controls has a LocalResourceFile property use this IterateControls(control.Controls, affectedControls, pi.GetValue(control, null).ToString()); } else { //Pass Resource File Root through IterateControls(control.Controls, affectedControls, resourceFileRoot); } } else { //Get Resource File Root from Controls LocalResourceFile Property IterateControls(control.Controls, affectedControls, objModuleControl.LocalResourceFile); } }
internal static void SerializeInnerContents(Control control, IDesignerHost host, ObjectPersistData persistData, TextWriter writer, string filter) { PersistChildrenAttribute attribute = (PersistChildrenAttribute) TypeDescriptor.GetAttributes(control)[typeof(PersistChildrenAttribute)]; ParseChildrenAttribute attribute2 = (ParseChildrenAttribute) TypeDescriptor.GetAttributes(control)[typeof(ParseChildrenAttribute)]; if (attribute.Persist || (!attribute2.ChildrenAsProperties && control.HasControls())) { for (int i = 0; i < control.Controls.Count; i++) { SerializeControl(control.Controls[i], host, writer, string.Empty); } } else { SerializeInnerProperties(control, host, persistData, writer, filter); } }
/// <summary> /// 验证控件权限。 /// </summary> /// <param name="ctrl"></param> /// <param name="permissions"></param> protected virtual void VerifyPermissions(Control ctrl, SecurityPermissionCollection permissions) { if (ctrl != null && ctrl.HasControls()) { foreach (Control ctr in ctrl.Controls) { if (ctr is WebControl) this.VerifyPermissionControls(ctr, permissions); this.VerifyPermissions(ctr, permissions); } } }
// 2009/07/21-start #region コントロール取得&イベントハンドラ設定 /// <summary>コントロール取得&イベントハンドラ設定(下位互換)</summary> /// <param name="ctrl">コントロール</param> /// <param name="prefix">プレフィックス</param> /// <param name="eventHandler">イベント ハンドラ</param> /// <param name="controlHt">ディクショナリ</param> internal static void GetCtrlAndSetClickEventHandler( Control ctrl, string prefix, object eventHandler, Dictionary<string, Control> controlHt) { #region チェック処理 // コントロール指定が無い場合 if (ctrl == null) { // 何もしないで戻る。 return; } // プレフィックス指定が無い場合 if (prefix == null || prefix == "") { // 何もしないで戻る。 return; } #endregion #region コントロール取得&イベントハンドラ設定 // コントロールのIDチェック if (ctrl.ID == null) { // コントロールID無し } else { // コントロールID有り // コントロールのID長確認 if (prefix.Length <= ctrl.ID.Length) { // 指定のプレフィックス if (prefix == ctrl.ID.Substring(0, prefix.Length)) { // イベントハンドラを設定する。 if (prefix == GetConfigParameter.GetConfigValue(MyLiteral.PREFIX_OF_CHECK_BOX)) { // CHECK BOX CheckBox checkBox = FxCmnFunction.CastByAsOperator<CheckBox>(ctrl, prefix); // ハンドラをキャストして設定 checkBox.CheckedChanged += (EventHandler)eventHandler; // ディクショナリに格納 // ControlHt.Add(ctrl.ID, ctrl); // ControlHt[ctrl.ID] = ctrl; FxCmnFunction.AddControlToDic(ctrl, controlHt); // 2011/02/12 } } } } #endregion #region 再帰 // 子コントロールがある場合、 if (ctrl.HasControls()) { // 子コントロール毎に foreach (Control childCtrl in ctrl.Controls) { // 再帰する。 MyCmnFunction.GetCtrlAndSetClickEventHandler(childCtrl, prefix, eventHandler, controlHt); } } #endregion }
private Control RecursiveFindControl (Control ctrl, string p) { if (ctrl.ID == p) return ctrl; if (ctrl.HasControls()) { foreach (Control c in ctrl.Controls) { Control foundC = RecursiveFindControl(c, p); if (foundC != null) return foundC; } } return null; }
} // end protected Control FindWizardControl(string id) /// <summary> /// Find Wizard Control - Find a control in a wizard, is recursive /// </summary> /// <param name="srcCtrl">Source/Root Control</param> /// <param name="id">ID of target control</param> /// <returns>A Control, if found; null, if not</returns> protected Control FindWizardControl(Control srcCtrl, string id) { Control ctrlRtn = srcCtrl.FindControl(id); if (ctrlRtn == null) { if (srcCtrl.HasControls()) { int nbrCtrls = srcCtrl.Controls.Count; for (int i = 0; i < nbrCtrls; i++) { // Check all child controls of srcCtrl ctrlRtn = FindWizardControl(srcCtrl.Controls[i], id); if (ctrlRtn != null) break; } // endfor (int i=0; i < nbrCtrls; i++) } // endif (HasControls) } // endif (ctrlRtn == null) return ctrlRtn; } // end protected Control FindWizardControl(Control srcCtrl, string id)
/* * public static void Apply_CAIRS_Security_To_Control(System.Web.UI.Control cnt) * { * //get user security level * int iCurrentUserSecurityAccessLevel = Current_User_Access_Level(); * string sCurrentAccessibleSite = Current_User_Accessible_Site(); * * //Loop thru the control to see if there are child control * foreach (Control c in cnt.Controls) * { * bool hasChildControl = c.HasControls(); * * //does control have child control * if (hasChildControl) * { * //Recursive * Apply_CAIRS_Security_To_Control(c); * } * else * { * //look for attribute to disable * string security_disable = SECURITY_LEVEL_DISABLED; * string security_site_code = SECURITY_SITE_CODE; * #region Search for Control Type * * //Datagrid * if (c is DataGrid) * { * DateTime start = DateTime.Now; * DataGrid dg = (DataGrid)c; * * int iControlCont = dg.Controls.Count; * * foreach (Control dg_control in dg.Controls) * { * //Recursive * //Apply_CAIRS_Security_To_Control(dg_control); * } * * string durartion = DateTime.Now.Subtract(start).TotalSeconds.ToString(); * } * * //HyperLink * if (c is HyperLink) * { * HyperLink hyp = (HyperLink)c; * * //get the security level on the attribute * string sSecurityLevel = hyp.Attributes[security_disable]; * string sSecuritySite = hyp.Attributes[security_site_code]; * * hyp.Enabled = isDisabledControl(iCurrentUserSecurityAccessLevel, sCurrentAccessibleSite, sSecurityLevel, sSecuritySite); * } * * //Button * if (c is Button) * { * Button btn = (Button)c; * * //get the security level on the attribute * string sSecurityLevel = btn.Attributes[security_disable]; * string sSecuritySite = btn.Attributes[security_site_code]; * * //if the button is enabled, run thru logic. If enabled is false, leave it the way it is * if (btn.Enabled) * { * btn.Enabled = isDisabledControl(iCurrentUserSecurityAccessLevel, sCurrentAccessibleSite, sSecurityLevel, sSecuritySite); * } * } * * //LinkButton * if (c is LinkButton) * { * LinkButton lnkbtn = (LinkButton)c; * * //get the security level on the attribute * string sSecurityLevel = lnkbtn.Attributes[security_disable]; * string sSecuritySite = lnkbtn.Attributes[security_site_code]; * * //if the lnkBth is enabled, run thru logic. If enabled is false, leave it the way it is * if (lnkbtn.Enabled) * { * lnkbtn.Enabled = isDisabledControl(iCurrentUserSecurityAccessLevel, sCurrentAccessibleSite, sSecurityLevel, sSecuritySite); * } * } * * //Textbox * if (c is TextBox) * { * TextBox txt = (TextBox)c; * //get the security level on the attribute * string sSecurityLevel = txt.Attributes[security_disable]; * string sSecuritySite = txt.Attributes[security_site_code]; * * txt.Enabled = isDisabledControl(iCurrentUserSecurityAccessLevel, sCurrentAccessibleSite, sSecurityLevel, sSecuritySite); * } * //Drop Down List * if (c is DropDownList) * { * DropDownList ddl = (DropDownList)c; * //get the security level on the attribute * string sSecurityLevel = ddl.Attributes[security_disable]; * string sSecuritySite = ddl.Attributes[security_site_code]; * * ddl.Enabled = isDisabledControl(iCurrentUserSecurityAccessLevel, sCurrentAccessibleSite, sSecurityLevel, sSecuritySite); * } * * //CheckBox * if (c is CheckBox) * { * CheckBox chk = (CheckBox)c; * //get the security level on the attribute * string sSecurityLevel = chk.Attributes[security_disable]; * string sSecuritySite = chk.Attributes[security_site_code]; * * chk.Enabled = isDisabledControl(iCurrentUserSecurityAccessLevel, sCurrentAccessibleSite, sSecurityLevel, sSecuritySite); * } * * //Listbox * if (c is ListBox) * { * ListBox lst = (ListBox)c; * //get the security level on the attribute * string sSecurityLevel = lst.Attributes[security_disable]; * string sSecuritySite = lst.Attributes[security_site_code]; * * lst.Enabled = isDisabledControl(iCurrentUserSecurityAccessLevel, sCurrentAccessibleSite, sSecurityLevel, sSecuritySite); * } * * //CheckBoxList * if (c is CheckBoxList) * { * CheckBoxList chklst = (CheckBoxList)c; * //get the security level on the attribute * string sSecurityLevel = chklst.Attributes[security_disable]; * string sSecuritySite = chklst.Attributes[security_site_code]; * * chklst.Enabled = isDisabledControl(iCurrentUserSecurityAccessLevel, sCurrentAccessibleSite, sSecurityLevel, sSecuritySite); * } * #endregion * } * } * } * */ #endregion public static void Apply_CAIRS_Security_To_Single_Control(System.Web.UI.Control cnt) { //get user security level int iCurrentUserSecurityAccessLevel = Current_User_Access_Level(); string sCurrentAccessibleSite = Current_User_Accessible_Site(); bool hasChildControl = cnt.HasControls(); if (hasChildControl) { foreach (Control c in cnt.Controls) { Apply_CAIRS_Security_To_Single_Control(c); } } else { //look for attribute to disable string security_disable = SECURITY_LEVEL_DISABLED; string security_site_code = SECURITY_SITE_CODE; string access_msg = "Access Denied"; #region Search for Control Type //Datagrid if (cnt is DataGrid) { DateTime start = DateTime.Now; DataGrid dg = (DataGrid)cnt; int iControlCont = dg.Controls.Count; foreach (Control dg_control in dg.Controls) { //Recursive Apply_CAIRS_Security_To_Single_Control(dg_control); } } //HyperLink if (cnt is HyperLink) { HyperLink hyp = (HyperLink)cnt; //get the security level on the attribute string sSecurityLevel = hyp.Attributes[security_disable]; string sSecuritySite = hyp.Attributes[security_site_code]; bool isDisabled = isDisabledControl(iCurrentUserSecurityAccessLevel, sCurrentAccessibleSite, sSecurityLevel, sSecuritySite); hyp.Enabled = isDisabled; if (!isDisabled) { hyp.ToolTip = access_msg; } } //Button if (cnt is Button) { Button btn = (Button)cnt; //get the security level on the attribute string sSecurityLevel = btn.Attributes[security_disable]; string sSecuritySite = btn.Attributes[security_site_code]; bool isDisabled = isDisabledControl(iCurrentUserSecurityAccessLevel, sCurrentAccessibleSite, sSecurityLevel, sSecuritySite); //if the button is enabled, run thru logic. If enabled is false, leave it the way it is //if (btn.Enabled) //{ btn.Enabled = isDisabled; //} if (!isDisabled) { btn.ToolTip = access_msg; } } //LinkButton if (cnt is LinkButton) { LinkButton lnkbtn = (LinkButton)cnt; //get the security level on the attribute string sSecurityLevel = lnkbtn.Attributes[security_disable]; string sSecuritySite = lnkbtn.Attributes[security_site_code]; bool isDisabled = isDisabledControl(iCurrentUserSecurityAccessLevel, sCurrentAccessibleSite, sSecurityLevel, sSecuritySite); //if the lnkBtn is enabled, run thru logic. If enabled is false, leave it the way it is if (lnkbtn.Enabled) { lnkbtn.Enabled = isDisabled; if (!isDisabled) { lnkbtn.ToolTip = access_msg; } } } //Textbox if (cnt is TextBox) { TextBox txt = (TextBox)cnt; //get the security level on the attribute string sSecurityLevel = txt.Attributes[security_disable]; string sSecuritySite = txt.Attributes[security_site_code]; txt.Enabled = isDisabledControl(iCurrentUserSecurityAccessLevel, sCurrentAccessibleSite, sSecurityLevel, sSecuritySite); } //Drop Down List if (cnt is DropDownList) { DropDownList ddl = (DropDownList)cnt; //get the security level on the attribute string sSecurityLevel = ddl.Attributes[security_disable]; string sSecuritySite = ddl.Attributes[security_site_code]; ddl.Enabled = isDisabledControl(iCurrentUserSecurityAccessLevel, sCurrentAccessibleSite, sSecurityLevel, sSecuritySite); } //CheckBox if (cnt is CheckBox) { CheckBox chk = (CheckBox)cnt; //get the security level on the attribute string sSecurityLevel = chk.Attributes[security_disable]; string sSecuritySite = chk.Attributes[security_site_code]; chk.Enabled = isDisabledControl(iCurrentUserSecurityAccessLevel, sCurrentAccessibleSite, sSecurityLevel, sSecuritySite); } //Listbox if (cnt is ListBox) { ListBox lst = (ListBox)cnt; //get the security level on the attribute string sSecurityLevel = lst.Attributes[security_disable]; string sSecuritySite = lst.Attributes[security_site_code]; lst.Enabled = isDisabledControl(iCurrentUserSecurityAccessLevel, sCurrentAccessibleSite, sSecurityLevel, sSecuritySite); } //CheckBoxList if (cnt is CheckBoxList) { CheckBoxList chklst = (CheckBoxList)cnt; //get the security level on the attribute string sSecurityLevel = chklst.Attributes[security_disable]; string sSecuritySite = chklst.Attributes[security_site_code]; chklst.Enabled = isDisabledControl(iCurrentUserSecurityAccessLevel, sCurrentAccessibleSite, sSecurityLevel, sSecuritySite); } #endregion } }
// 2009/07/21-start #region コントロール取得&イベントハンドラ設定 /// <summary>コントロール取得&イベントハンドラ設定(下位互換)</summary> /// <param name="ctrl">コントロール</param> /// <param name="prefix">プレフィックス</param> /// <param name="eventHandler">イベント ハンドラ</param> /// <param name="controlHt">ディクショナリ</param> internal static void GetCtrlAndSetClickEventHandler( Control ctrl, string prefix, object eventHandler, Dictionary<string, Control> controlHt) { #region チェック処理 // コントロール指定が無い場合 if (ctrl == null) { // 何もしないで戻る。 return; } // プレフィックス指定が無い場合 if (prefix == null || prefix == "") { // 何もしないで戻る。 return; } #endregion #region コントロール取得&イベントハンドラ設定 // コントロールのIDチェック if (ctrl.ID == null) { // コントロールID無し } else { // コントロールID有り // コントロールのID長確認 if (prefix.Length <= ctrl.ID.Length) { // 指定のプレフィックス if (prefix == ctrl.ID.Substring(0, prefix.Length)) { // イベントハンドラを設定する。 if (prefix == GetConfigParameter.GetConfigValue(MyLiteral.PREFIX_OF_CHECK_BOX)) { // CHECK BOX CheckBox checkBox = null; try { // キャストできる checkBox = (CheckBox)ctrl; } catch (Exception ex) { // キャストできない throw new FrameworkException( FrameworkExceptionMessage.CONTROL_TYPE_ERROR[0], String.Format(FrameworkExceptionMessage.CONTROL_TYPE_ERROR[1], prefix, ctrl.GetType().ToString()), ex); } checkBox.CheckedChanged += (EventHandler)eventHandler; // ディクショナリに格納 // ControlHt.Add(ctrl.ID, ctrl); // ControlHt[ctrl.ID] = ctrl; FxCmnFunction.AddControlToDic(ctrl, controlHt); // 2011/02/12 } } } } #endregion #region 再帰 // 子コントロールがある場合、 if (ctrl.HasControls()) { // 子コントロール毎に foreach (Control childCtrl in ctrl.Controls) { // 再帰する。 MyCmnFunction.GetCtrlAndSetClickEventHandler(childCtrl, prefix, eventHandler, controlHt); } } #endregion }
private void searchContentPlaceHolder(Control ctrl, List<string> lst) { if (ctrl is ContentPlaceHolder) lst.Add(ctrl.ClientID); else if (ctrl.HasControls()) foreach (Control c in ctrl.Controls) searchContentPlaceHolder(c, lst); }