private DropDownExtender CreateDropDownExtender(string labelId, string panelId) { var dropDownExt = new DropDownExtender { ID = ClientID + "_ddext", TargetControlID = labelId, DropDownControlID = panelId }; return(dropDownExt); }
protected override void CreateChildControls() { //Creo los controles internos Panel = CreateDropDownPanel(); SelectAll = CreateSelectAllPanel(); var listContainerPanel = CreateScrollPanel(); Label = CreateLabel(); CheckBoxList = CreateCheckBoxList(); DropDownExtender = CreateDropDownExtender(Label.ID, Panel.ID); //Agrego los controles al padre correspondiente Panel.Controls.Add(SelectAll); Panel.Controls.Add(listContainerPanel); listContainerPanel.Controls.Add(CheckBoxList); Controls.Add(Label); Controls.Add(Panel); Controls.Add(DropDownExtender); // !!! // Los scripts no se pueden crear hasta que los controles esten asignados a la pagina con Controls.Add // porque no se puede calcular el ClientID // Script que selecciona y deselecciona todos los elementos // Evita que se cierre el dropdown y actualiza el label SelectAll.Attributes.Add("onclick", string.Concat(StopPropagationScript, string.Format(GetLabelScript, Label.ClientID), ResetLabelScript, GetElementsScript, SetDoCheck, "for(w in el){if(el[w].type=='checkbox'){el[w].checked=docheck;", IfCheckedAddToLabelScript, "}}", SetAllStringScript, SetLabelTitleScript)); // Script que actualiza el label con todos los elementos seleccionados // Evita que se cierre el dropdown CheckBoxList.Attributes.Add("onclick", string.Concat(StopPropagationScript, string.Format(GetLabelScript, Label.ClientID), ResetLabelScript, GetElementsScript, "for(w in el)", IfCheckedAddToLabelScript, SetAllStringScript, SetLabelTitleScript)); CheckBoxList.SelectedIndexChanged += CheckBoxSelectedIndexChanged; }
protected override void CreateChildControls() { base.CreateChildControls(); labelWrapper = new Panel(); labelWrapper.ID = "labelWrapper"; labelWrapper.CssClass = "menu_label_wrapper"; labelWrapper.Width = this.Width; labelWrapper.Height = this.Height; this.Controls.Add(labelWrapper); if (this.DisplayMode == BulletedListDisplayMode.HyperLink || !this.ActiveLabel) { label = new Label(); label.ID = "label"; label.CssClass = "menu_label"; ((Label)label).Text = this.Label; } else { label = new LinkButton(); label.ID = "label"; label.CssClass = "menu_link"; ((LinkButton)label).Click += (s, e) => { if (!this.BubblesMilestones) { OnMenuClick(this.Label, this.Argument); } else { OnMenuClick(this.CommandName, this.CommandArgument); } }; ((LinkButton)label).Text = this.Label; } if (null != this.LabelWidth) { label.Width = this.LabelWidth; } else { label.Width = this.Width; } if (null != this.LabelHeight) { label.Height = this.LabelHeight; } else { label.Height = this.Height; } labelWrapper.Controls.Add(label); commandsList.ID = "commandsList"; commandsList.CssClass = "menu_commands"; commandsList.Style.Add("display", "none"); commandsList.DisplayMode = this.DisplayMode; if (this.DisplayMode == BulletedListDisplayMode.LinkButton) { commandsList.Click += (s, e) => { ListItem item = commandsList.Items[e.Index]; if (null != item) { if (!this.BubblesMilestones) { OnMenuClick(item.Text, item.Value); } else { OnMenuClick(item.Value, this.CommandArgument); } } }; } this.Controls.Add(commandsList); dropDownExtender = new DropDownExtender(); dropDownExtender.ID = "dropDownExtender"; //dropDownExtender.BehaviorID = this.ID + "Behaviour"; dropDownExtender.TargetControlID = "labelWrapper"; dropDownExtender.DropDownControlID = "commandsList"; dropDownExtender.Enabled = this.Enabled; this.Controls.Add(dropDownExtender); dropDownExtender.HighlightBackColor = System.Drawing.Color.Transparent; }
protected override void CreateChildControls() { Label = new Label { ID = ClientID + "_label", Text = "", Width = Width, Height = new Unit("17px"), BackColor = Color.White, BorderStyle = BorderStyle.Solid, BorderWidth = new Unit("1px"), BorderColor = Color.Gray, }; Label.Style.Add(HtmlTextWriterStyle.Overflow, "hidden"); Label.Style.Add(HtmlTextWriterStyle.PaddingTop, "3px"); Label.Style.Add(HtmlTextWriterStyle.WhiteSpace, "nowrap"); var panel = new Panel { ID = ClientID + "_panel", Width = Width, BackColor = Color.White, BorderStyle = BorderStyle.Solid, BorderWidth = new Unit("1px"), BorderColor = Color.Gray, ScrollBars = ScrollBars.Auto }; var panelAll = new Panel { ID = ClientID + "_panelAll", BackColor = Color.LightGray }; panelAll.Font.Bold = true; panelAll.Style.Add(HtmlTextWriterStyle.Cursor, "pointer"); panelAll.Style.Add(HtmlTextWriterStyle.Padding, "3px"); panelAll.Controls.Add(new Literal { Text = "Todos" }); CheckBox = new CheckBoxList { ID = ClientID + "_list" }; foreach (ListItem item in Items) { CheckBox.Items.Add(item); } DropDownExtender = new DropDownExtender { ID = ClientID + "_ddext", TargetControlID = Label.ID, DropDownControlID = panel.ID }; panel.Controls.Add(panelAll); panel.Controls.Add(CheckBox); Controls.Add(Label); Controls.Add(panel); Controls.Add(DropDownExtender); panelAll.Attributes.Add("onclick", string.Format( @"event.stopPropagation(); var label = $get('{0}'); label.innerHTML = ''; var el = this.parentNode.getElementsByTagName('input'); var docheck = true; for(w in el) {{ if(el[w].checked) {{ docheck = false; break; }} }} for(w in el) {{ if(el[w].type == 'checkbox') {{ el[w].checked = docheck; if(docheck) {{ if(label.innerHTML != '') label.innerHTML += ', '; label.innerHTML += el[w].nextSibling.innerHTML; }} }} }}", Label.ClientID)); CheckBox.Attributes.Add("onclick", string.Format( @"event.stopPropagation(); var label = $get('{0}'); label.innerHTML = ''; var el = this.parentNode.getElementsByTagName('input'); for(w in el) if(el[w].checked) {{ if(label.innerHTML != '') label.innerHTML += ', '; label.innerHTML += el[w].nextSibling.innerHTML; }} ", Label.ClientID)); CheckBox.SelectedIndexChanged += checkBox_SelectedIndexChanged; if (AutoPostback) { var pb = Page.ClientScript.GetPostBackEventReference(this, ""); DropDownExtender.OnClientPopup = @"function(el, args) { if(!el.lastSelection) el.add_hiding(function(el,args){ if(el.lastSelection != $get('" + Label.ClientID + @"').innerHTML) " + pb + @";}); el.lastSelection = $get('" + Label.ClientID + @"').innerHTML; }"; } }
private void CellEdit(TableCell cell, string id, bool entrada, bool deleted, bool modified) { var idPanelText = entrada ? "panelText" : "panelText2"; var idPanelButton = entrada ? "panelButton" : "panelButton2"; var idExt = entrada ? "ext" : "ext2"; var idBtAction = entrada ? "btAction" : "btAction2"; var module = Usuario.Modules[GetRefference()]; var panelText = cell.FindControl(idPanelText) as Panel; var panelButton = cell.FindControl(idPanelButton) as Panel; var ext = cell.FindControl(idExt) as DropDownExtender; if (panelText == null) { panelText = new Panel { ID = idPanelText }; if (deleted) { var img = new Image { ImageUrl = "~/images/delete.png", ImageAlign = ImageAlign.AbsBottom }; panelText.Controls.Add(img); cell.ForeColor = Color.DarkRed; } else if (modified) { var img = new Image { ImageUrl = "~/images/page_white_edit.png", ImageAlign = ImageAlign.AbsBottom }; panelText.Controls.Add(img); cell.ForeColor = Color.DarkBlue; } panelText.Controls.Add(new Literal { Text = " " + cell.Text }); cell.Controls.Add(panelText); } if (panelButton == null && module.Delete) { panelButton = new Panel { ID = idPanelButton }; var btRestore = new Button { ID = idBtAction, CommandName = deleted ? "Restore" : "Delete", CommandArgument = id, Text = deleted ? "Restaurar" : "Eliminar", OnClientClick = string.Format("return confirm(\"{0}\");", CultureManager.GetSystemMessage("CONFIRM_OPERATION")) }; panelButton.Controls.Add(btRestore); cell.Controls.Add(panelButton); } if (ext == null && module.Edit || module.Delete) { ext = new DropDownExtender { ID = idExt, TargetControlID = panelText.ID, DropDownControlID = panelButton.ID }; cell.Controls.Add(ext); } var btAction = cell.FindControl(idBtAction) as Button; if (btAction != null) { btAction.Command += btRestore_Command; } }