/// <summary> /// Recursively parse the information about the controls /// <para>Рекурсивно извлечь информацию об элементах управления</para> /// </summary> private void ParseControls(ControlCollection controls) { if (controls != null) { foreach (Control control in controls) { if (control is WebControl) { // parse channel numbers from CSS class using the format "data cnl_N" or "data ctrl_N" // извлечение номеров каналов из класса CSS имеющего формат "data cnl_N" или "data ctrl_N" string cssClass = ((WebControl)control).CssClass.ToLower(); if (cssClass.StartsWith("data ")) { int cnlNum = GetCnlNum(cssClass, " cnl_"); if (cnlNum > 0) { InCnlSet.Add(cnlNum); InCnlBindings.Add(new CnlBinding(control, cnlNum)); } else { cnlNum = GetCnlNum(cssClass, " ctrl_"); if (cnlNum > 0) { CtrlCnlSet.Add(cnlNum); CtrlCnlBindings.Add(new CnlBinding(control, cnlNum)); } } } } ParseControls(control.Controls); } } }
/// <summary> /// Очистить представление /// </summary> public virtual void Clear() { Title = ""; Path = ""; CnlList.Clear(); CtrlCnlList.Clear(); CnlSet.Clear(); CtrlCnlSet.Clear(); }
/// <summary> /// Добавить номер канала управления в множество и в список /// </summary> protected void AddCtrlCnlNum(int ctrlCnlNum) { if (ctrlCnlNum > 0 && CtrlCnlSet.Add(ctrlCnlNum)) { int index = CtrlCnlList.BinarySearch(ctrlCnlNum); if (index < 0) { CtrlCnlList.Insert(~index, ctrlCnlNum); } } }
/// <summary> /// Add control channel number to set and to list. /// </summary> protected void AddCtrlCnlNum(int ctrlCnlNum) { if (ctrlCnlNum <= 0 || !CtrlCnlSet.Add(ctrlCnlNum)) { return; } int index = CtrlCnlList.BinarySearch(ctrlCnlNum); if (index < 0) { CtrlCnlList.Insert(~index, ctrlCnlNum); } }
/// <summary> /// Определить, что канал управления используется в представлении /// </summary> public virtual bool ContainsCtrlCnl(int ctrlCnlNum) { return(CtrlCnlSet.Contains(ctrlCnlNum)); }