Пример #1
0
        protected void OnDataBound(object sender, EventArgs e)
        {
            if (dgRelatorio.HeaderRow == null)
            {
                return;
            }
            if (dgRelatorio.HeaderRow.Parent.Controls.Count == 0)
            {
                return;
            }
            var row = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal);
            var r   = dgRelatorio.HeaderRow.Parent.Controls[0];

            //estou assumindo que as colunas estão na ordem do chklistacamposvisiveis
            foreach (ListItem item in chkListaCamposVisiveis.Items)
            {
                if (item.Value.IndexOf("MD__") >= 0)
                {
                    continue;
                }

                var c = (DataControlFieldHeaderCell)r.Controls[0];

                if (c.Text != item.Text && c.ContainingField.HeaderText != item.Text && c.Text != item.Value)
                {
                    continue;
                }

                c.RowSpan = 2;
                r.Controls.Remove(r.Controls[0]);
                row.Controls.Add(c);
            }

            //pega os modulos para poder fazer o group dos modulos
            var manterModulosProgramas = new ManterModulo();
            IList <Dominio.Classes.Modulo> ls;

            var idPrograma = string.IsNullOrEmpty(txtPrograma.Text) ? 0 : int.Parse(txtPrograma.Text);
            var idOferta   = string.IsNullOrWhiteSpace(cbxOfertas.SelectedValue) ? 0 : int.Parse(cbxOfertas.SelectedValue);
            var idModulo   = string.IsNullOrWhiteSpace(cbxModulos.SelectedValue) ? 0 : int.Parse(cbxModulos.SelectedValue);

            if (idModulo != 0)
            {
                ls = new List <Modulo> {
                    manterModulosProgramas.ObterPorId(idModulo)
                };
            }
            else if (idOferta != 0)
            {
                ls = manterModulosProgramas.ObterPorCapacitacao(idOferta);
            }
            else if (idPrograma != 0)
            {
                ls = manterModulosProgramas.ObterPorPrograma(idPrograma);
            }
            else
            {
                ls = manterModulosProgramas.ObterTodos();
            }

            foreach (var item in ls)
            {
                //calcula o columnSpan de acordo com a quantidade de colunas visiveis
                var qnt  = chkListaCamposVisiveis.Items.Cast <ListItem>().Count(item2 => item2.Value.LastIndexOf("__" + item.ID + "__") != -1 && item2.Selected);
                var cell = new TableHeaderCell {
                    Text = item.Nome, ColumnSpan = qnt
                };
                row.Controls.Add(cell);
            }
            dgRelatorio.HeaderRow.Parent.Controls.AddAt(0, row);
        }
Пример #2
0
        private IDictionary <string, string> AtualizarListaCamposVisiveis()
        {
            var temp = new ListItemCollection();

            foreach (ListItem item in chkListaCamposVisiveis.Items)
            {
                temp.Add(item);
            }
            //pegar lista já marcada nos checkbox
            var manterModulosProgramas = new ManterModulo();
            IList <Dominio.Classes.Modulo> ls;
            var resultado  = new Dictionary <string, string>();
            var idPrograma = string.IsNullOrEmpty(txtPrograma.Text) ? 0 : int.Parse(txtPrograma.Text);
            var idOferta   = string.IsNullOrWhiteSpace(cbxOfertas.SelectedValue) ? 0 : int.Parse(cbxOfertas.SelectedValue);
            var idModulo   = string.IsNullOrWhiteSpace(cbxModulos.SelectedValue) ? 0 : int.Parse(cbxModulos.SelectedValue);

            if (idModulo != 0)
            {
                ls = new List <Modulo>
                {
                    manterModulosProgramas.ObterPorId(idModulo)
                };
            }
            else if (idOferta != 0)
            {
                ls = manterModulosProgramas.ObterPorCapacitacao(idOferta);

                WebFormHelper.PreencherLista(ls, cbxModulos, true);
            }
            else if (idPrograma != 0)
            {
                ls = manterModulosProgramas.ObterPorPrograma(idPrograma);
            }
            else
            {
                ls = manterModulosProgramas.ObterTodos();
            }

            foreach (var item in ls)
            {
                var itemPrazo = new ListItem
                {
                    Selected = true,
                    Text     = item.Nome + " - Prazo",
                    Value    = "MD__" + RemoveExtraChars(item.Nome) + "__prazo__" + item.ID + "__"
                };
                var itemSolucoesInscritas = new ListItem
                {
                    Selected = true,
                    Text     = item.Nome + " - Soluções Inscritas",
                    Value    = "MD__" + RemoveExtraChars(item.Nome) + "__SolucoesInscritas__" + item.ID + "__"
                };
                var itemSolucoesConcluidas = new ListItem
                {
                    Selected = true,
                    Text     = item.Nome + " - Soluções Concluídas",
                    Value    = "MD__" + RemoveExtraChars(item.Nome) + "__SolucoesConcluidas__" + item.ID + "__"
                };
                _lsItens.Add(itemPrazo);
                _lsItens.Add(itemSolucoesInscritas);
                _lsItens.Add(itemSolucoesConcluidas);

                resultado.Add(itemPrazo.Value, item.Nome);
                resultado.Add(itemSolucoesInscritas.Value, item.Nome);
                resultado.Add(itemSolucoesConcluidas.Value, item.Nome);
            }

            WebFormHelper.PreencherLista(_lsItens, chkListaCamposVisiveis);

            foreach (ListItem item in chkListaCamposVisiveis.Items)
            {
                var valor = true;
                if (temp.Count > 0)
                {
                    var item1 = item;
                    foreach (var tmp in temp.Cast <ListItem>().Where(tmp => tmp.Value == item1.Value))
                    {
                        valor = tmp.Selected;
                        break;
                    }
                }
                item.Selected = valor;
            }

            foreach (var item in ls)
            {
                foreach (var item2 in _lsItens.Cast <ListItem>().Where(item2 => item2.Text.IndexOf(item.Nome) >= 0))
                {
                    item2.Text = item2.Text.Replace(item.Nome + " - ", "");
                }
            }

            dgRelatorio.Columns.Clear();
            foreach (ListItem item in _lsItens)
            {
                dgRelatorio.Columns.Add(new BoundField
                {
                    HeaderText     = item.Text,
                    DataField      = item.Value,
                    SortExpression = item.Value
                });
            }

            return(resultado);
        }