Exemplo n.º 1
0
        /// <summary>
        /// Genera las columnas del gridpanel.
        /// </summary>
        /// <param name="gp"></param>
        public void ObjectToGridPanel(ref Ext.Net.GridPanel gp)
        {
            foreach (Atributos a in armador.Atributos)
            {
                TypeCode tc = GetTypeCode(a.Tipo);
                Ext.Net.ColumnBase.Config cf;

                switch (tc)
                {
                    case TypeCode.Boolean:
                        {
                            if (!a.Columna.ValoresFijos)
                                cf = new Ext.Net.CheckColumn.Config();
                            else
                                cf = new Ext.Net.Column.Config();
                        }
                        break;

                    case TypeCode.DateTime:
                        {
                            cf = new Ext.Net.DateColumn.Config() { Format = a.Columna.Formato.Valor };
                        }
                        break;

                    default:
                        cf = new Ext.Net.Column.Config();
                        break;
                }

                if(armador.EsIdentificador(a))
                {
                    cf.ColumnID = a.Nombre;
                }
                cf.Editable = !a.Autogenerado;
                cf.DataIndex = a.Nombre;
                cf.Header = a.Columna.Titulo;

                Ext.Net.ColumnBase col;

                switch (tc)
                {
                    case TypeCode.Boolean:
                        {
                            if (!a.Columna.ValoresFijos)
                            {
                                col = new Ext.Net.CheckColumn((Ext.Net.CheckColumn.Config)cf);
                            }
                            else
                            {
                                col = new Ext.Net.Column((Ext.Net.Column.Config)cf);
                                col.Editor.Add(GenerarCampoCombo(a.Columna.Valores));
                            }
                        }
                        break;

                    case TypeCode.DateTime:
                        {
                            col = new Ext.Net.DateColumn((Ext.Net.DateColumn.Config)cf);
                            col.Editor.Add(GenerarCampo(tc));
                        }
                        break;

                    default:
                        {
                            col = new Ext.Net.Column((Ext.Net.Column.Config)cf);
                            if (!a.Autogenerado)
                            {
                                // Si no es una relación
                                if (a.Relacion == null)
                                {
                                    if (!a.Columna.ValoresFijos)
                                    {
                                        col.Editor.Add(GenerarCampo(tc));
                                    }
                                    else
                                    {
                                        col.Editor.Add(GenerarCampoCombo(a.Columna.Valores));
                                    }


                            if (a.EsLetra == true)
                            {

                                Ext.Net.UX.InputTextMask mascara = new InputTextMask();
                                mascara.Mask = "L";

                                col.Editor.Editor.Plugins.Add(mascara);
                            }
                             if (a.EsCuit ==  true)
                            {                             
                         
                            Ext.Net.UX.InputTextMask mascara = new InputTextMask();
                            mascara.Mask = "99-99999999-9";
                                 
                            col.Editor.Editor.Plugins.Add(mascara);
                            }
                             if (a.EsDni == true)
                             {

                                 Ext.Net.UX.InputTextMask mascara = new InputTextMask();
                                 mascara.Mask = "99.999.999";
                                 col.Editor.Editor.Plugins.Add(mascara);
                             }
                             if (a.EsImporte == true)
                             {

                                 Ext.Net.UX.InputTextMask mascara = new InputTextMask();
                                 mascara.Mask = "$99999999";
                                 col.Editor.Editor.Plugins.Add(mascara);
                             }

                             if (a.EsMail == true)
                             {

                                 Ext.Net.UX.InputTextMask mascara = new InputTextMask();
                                 mascara.Mask.Contains("@");
                                 col.Editor.Editor.Plugins.Add(mascara);
                             }
                             if (a.EsNumerico == true)
                             {
                                 Ext.Net.UX.InputTextMask mascara = new InputTextMask();
                                 mascara.Mask = "99999999999";
                                 col.Editor.Editor.Plugins.Add(mascara);
                             }
                             if (a.EsPorcentaje == true)
                             {
                                 Ext.Net.UX.InputTextMask mascara = new InputTextMask();
                                 mascara.Mask = "999%";
                                 col.Editor.Editor.Plugins.Add(mascara);
                             }

                                }
                                else // Si ES una relación
                                {
                                    List<CustomValue> valores = new List<CustomValue>();

                                    if (a.Relacion.PermitirNull)
                                        valores.Add(new CustomValue("", null));

                                    foreach (object o in a.Relacion.Resultados2)
                                    {
                                        bool match = true;
                                        var atributos = (IList<Atributos>)o;
                                        if (ValoresCombo != null)
                                        {
                                            foreach (SqlValor v in ValoresCombo)
                                            {
                                                foreach (Atributos atr in atributos)
                                                {
                                                    if (v.Nombre.Equals(atr.Nombre))
                                                    {
                                                        if (!v.Valor.ToString().Equals(atr.Valor.ToString())) // Bugfix haciendo comparación con strings, porque me pasaba que al comparar 1 != 1 decia true...
                                                        {
                                                            match = false;
                                                            break;
                                                        }
                                                    }
                                                }

                                                if (!match)
                                                    break;
                                            }
                                        }

                                        if (match)
                                        {
                                            valores.Add(new CustomValue(
                                                atributos[a.Relacion.CampoSecundario].Valor.ToString(),
                                                atributos[a.Relacion.CampoId].Valor));
                                        }

                                        //var atributos = (object[])o;
                                        //valores.Add(new CustomValue(atributos[a.Relacion.CampoSecundario].ToString(), atributos[a.Relacion.CampoId]));
                                    }
                                    col.Editor.Add(GenerarCampoCombo(valores.ToArray()));
                                }
                            }
                        }
                        break;
                }

                col.Hidden = !a.Columna.Visible;
                gp.ColumnModel.Columns.Add(col);
            }
        }
Exemplo n.º 2
0
        private void BindGrid2Columns()
        {
            /*
             * Создание окна поиска
             */
            Ext.Net.Toolbar bar = new Ext.Net.Toolbar();
            bar.Layout = "hbox";

            using (ContentDomain provider = Aspect.Model.Common.GetContentDomain(ClassifiacationTypeView))
            {
                //List<SearchExpression> source = new List<SearchExpression>();
                //List<IUserField> dictColumns = provider.GetUserFields(this.User.ID, RequestClassificationTreeID, FieldPlaceHolder.Grid);
                //List<UserProperty> columns = provider.GetUserPropertyColumns(this.User.ID, RequestClassificationTreeID, FieldPlaceHolder.Grid);

                // получаем пользовательские колонки для данного класса
                List<GridColumn> columns = provider.GetGridColumns(this.User.ID, RequestClassificationTreeID, FieldPlaceHolder.Grid);

                // извлекаем ширины колонок для данного класса
                List<ColumnWidth> columnWidths = provider.ColumnWidths.Where(p => p.ClassificationTreeID == RequestClassificationTreeID && p.UserID == this.User.ID).ToList();

                List<GridColumn> gridColumns = provider.GetGridColumns(this.User.ID, RequestClassificationTreeID, FieldPlaceHolder.Grid);
                foreach (var column in gridColumns)
                {
                    string fieldName = column.IsDictionary ? String.Format("{1} - {0}", column.Name, column.Group) : column.Name;
                    /*IEnumerable<SearchExpression> list = this.SearchConditions.Where(s => s.FieldID == column.ID);
                    source.Add(new SearchExpression()
                    {
                        FieldValue = list.Count() > 0 ? list.First().FieldValue : string.Empty,
                        FieldName = fieldName,
                        FieldID = column.ID,
                        Order = column.Order
                    });*/
                    AddSearchPanel(SearchWindow, fieldName, column.IsDictionary ? column.ID : column.SourceID, column.GridColumnType);
                }

                /*
                 * Создание списка колонок в гриде продуктов
                 */

                foreach (GridColumn column in columns)
                {
                    Ext.Net.ColumnBase newColumn;
                    switch (column.GridColumnType) {
                        case TypeEnum.Boolean:
                            newColumn = new Ext.Net.CheckColumn(); break;
                        default:
                            newColumn = new Ext.Net.Column(); break;
                    }

                    newColumn.ColumnID = column.ID.ToString();
                    foreach (int width in columnWidths.Where(p => p.ColumnID == column.ID).Select(p => p.Width))
                    {
                        newColumn.Width = width;
                    }
                    newColumn.Header = column.Alias;
                    newColumn.Tooltip = column.IsDictionary ? String.Format("{0} :: {1}", column.Group, column.Name) : column.Name;
                    newColumn.DataIndex = String.Format("{0}|{1}", column.OrderExpression, column.GridColumnType.ToString());
                    newColumn.Hideable = false;
                    this.GridPanel1.ColumnModel.Columns.Add(newColumn);
                    Store1.AddField(new Ext.Net.RecordField(newColumn.DataIndex));
                }
                // adding another field
                Store1.AddField(new Ext.Net.RecordField("ID"));
                Store1.AddField(new Ext.Net.RecordField("CID"));
            }
        }
Exemplo n.º 3
0
        /*private void BindGridColumns()
        {
            using (EditConfigurationProvider provider = new EditConfigurationProvider())
            {
                Aspect.Domain.Product prod = provider.GetProduct(this.ProductID);
                if (prod == null) return;
                this.Title = HeaderLiteral.Text = string.Format(HeaderLiteral.Text, prod.PublicName, prod.Version == null ? string.Empty : prod.Version.ToString());
                HeaderDateLiteral.Text = string.Format(HeaderDateLiteral.Text, DateTime.Now.ToShortDateString(), DateTime.Now.ToLongTimeString());

                //---
                SelectorProductGridField selector = new SelectorProductGridField(string.Empty, "ConfigurationID", true);
                selector.ItemStyle.Width = new Unit(15, UnitType.Pixel);
                EditConfigurationGrid.Columns.Add(selector);
                //---

                bool actionColumnAdded = false;
                List<GridColumn> list = provider.GetGridColumns();
                foreach (GridColumn item in list)
                {
                    BoundField field = null;
                    EditableGridColumn editableColumn = item as EditableGridColumn;
                    if (editableColumn == null)
                    {
                        if (item.GridColumnType == TypeEnum.Boolean)
                        {
                            field = new BooleanGridField();
                            field.DataField = item.DataItem;
                            field.HeaderText = item.Name;
                            field.ReadOnly = true;
                        }
                        else
                        {
                            if (!actionColumnAdded)
                            {
                                field = new ActionProductGridField(item.Name, item.DataItem);
                                actionColumnAdded = true;
                            }
                            else
                            {
                                field = new ProductGridField(item.Name, item.DataItem);
                            }
                            field.ItemStyle.Font.Size = new FontUnit(FontSize.Smaller);
                        }
                        //field = new ActionProductGridField(item.Name, item.DataItem);
                    }
                    else
                    {

                        if (editableColumn.View == EditableGridColumn.GridColumnView.TextBox)
                        {
                            field = new TextBoxProductGridField(editableColumn);
                        }
                        else if (editableColumn.View == EditableGridColumn.GridColumnView.DropDown)
                        {
                            field = new DropDownProductGridField(editableColumn);
                        }
                        else if (editableColumn.View == EditableGridColumn.GridColumnView.CheckBox)
                        {
                            field = new CheckBoxProductGridField(editableColumn);
                        }
                    }

                    if (field != null)
                    {
                        EditConfigurationGrid.Columns.Add(field);
                        //EditAddedConfigurationGrid.Columns.Add(field);
                    }
                }
            }
        }*/
        private void BindGridColumns2()
        {
            using (EditConfigurationProvider provider = new EditConfigurationProvider())
            {
                Aspect.Domain.Product prod = provider.GetProduct(this.ProductID);
                if (prod == null) return;

                this.Title = HeaderLiteral.Text = string.Format(HeaderLiteral.Text, prod.PublicName, prod.Version == null ? string.Empty : prod.Version.ToString());
                HeaderDateLiteral.Text = string.Format(HeaderDateLiteral.Text, DateTime.Now.ToShortDateString(), DateTime.Now.ToLongTimeString());

                // извлекаем ширины колонок для данного класса
                List<ColumnWidth> columnWidths = provider.ColumnWidths.Where(p => p.ClassificationTreeID == new Guid("11110000-0000-0000-0000-000011110001")
                    && p.UserID == this.User.ID).ToList();

                List<GridColumn> list = provider.GetGridColumns();

                // sort columns by user's order
                list = list.OrderBy(clm => columnWidths.Exists(w => w.ColumnID == clm.ID) ? columnWidths.Single(w => w.ColumnID == clm.ID).Index : Int32.MaxValue).ToList();

                foreach (GridColumn column in list)
                {
                    Ext.Net.ColumnBase extjsColumn = null;
                    EditableGridColumn editableColumn = column as EditableGridColumn;
                    if (editableColumn == null)
                    {
                        if (column.GridColumnType == TypeEnum.Boolean)
                        {
                            extjsColumn = new Ext.Net.CheckColumn();
                            extjsColumn.DataIndex = column.DataItem;
                            extjsColumn.Header = column.Name;
                        }
                        else
                        {
                            extjsColumn = new Ext.Net.Column();
                            extjsColumn.DataIndex = column.DataItem;
                            extjsColumn.Header = column.Name;
                        }
                    }
                    else
                    {

                        if (editableColumn.View == EditableGridColumn.GridColumnView.TextBox)
                        {
                            extjsColumn = new Ext.Net.Column();
                            if (editableColumn.Type == typeof(int) || editableColumn.Type == typeof(decimal))
                            {
                                Ext.Net.TextField field = new Ext.Net.TextField();
                                field.Regex = @"^\d+(,\d+)?$";
                                field.RegexText = "0";
                                extjsColumn.Editor.Add(field);
                            }
                            else
                            {
                                extjsColumn.Editor.Add(new Ext.Net.TextField());
                            }
                            extjsColumn.DataIndex = column.DataItem;
                            extjsColumn.Header = column.Name;
                            extjsColumn.Editable = true;
                        }
                        else if (editableColumn.View == EditableGridColumn.GridColumnView.DropDown)
                        {
                            extjsColumn = new Ext.Net.Column();
                            extjsColumn.DataIndex = column.DataItem;
                            extjsColumn.Header = column.Name;
                            extjsColumn.Editable = true;

                            StringBuilder renderFunction = new StringBuilder();
                            renderFunction.AppendLine("function(value){");
                            Ext.Net.ComboBox field = new Ext.Net.ComboBox();
                            field.Editable = false;
                            foreach (Pair<Guid, string> itemDropList in (editableColumn.DataSource.DataSource as List<Pair<Guid, string>>))
                            {
                                field.Items.Add(new Ext.Net.ListItem(itemDropList.Second, itemDropList.First.ToString()));
                                renderFunction.AppendFormat("if (value=='{0}') return '{1}';\n", itemDropList.First.ToString(), itemDropList.Second);
                            }
                            renderFunction.AppendLine("return 'error'; }");

                            extjsColumn.Editor.Add(field);
                            extjsColumn.Renderer.Handler = renderFunction.ToString();
                        }
                        else if (editableColumn.View == EditableGridColumn.GridColumnView.CheckBox)
                        {
                            extjsColumn = new Ext.Net.CheckColumn();
                            extjsColumn.DataIndex = column.DataItem;
                            extjsColumn.Header = column.Name;
                            extjsColumn.Editable = true;
                            extjsColumn.Editor.Add(new Ext.Net.Checkbox());
                        }
                    }

                    if (extjsColumn != null)
                    {
                        // setting visibility column
                        extjsColumn.Hidden = columnWidths.Exists(w => w.ColumnID == column.ID) ? columnWidths.Single(w => w.ColumnID == column.ID).Hidden : false;

                        extjsColumn.ColumnID = column.ID.ToString();
                        foreach (int width in columnWidths.Where(p => p.ColumnID == column.ID).Select(p => p.Width))
                        {
                            extjsColumn.Width = width;
                        }
                        Store1.AddField( new Ext.Net.RecordField(extjsColumn.DataIndex));
                        GridPanel.ColumnModel.Columns.Add(extjsColumn);
                    }
                }
                // дополнительные поля
                Store1.AddField(new Ext.Net.RecordField("ID"));
                Store1.AddField(new Ext.Net.RecordField("CID"));
                Store1.AddField(new Ext.Net.RecordField("ConfID"));
            }
        }