コード例 #1
0
        /// <summary>
        /// Returns <see cref="GridViewEditDataColumn"/> instance based on meta data passed in column argument.
        /// </summary>
        /// <param name="column">An instance of <see cref="ColumnMeta"/> containing meta data of column to be created.</param>
        /// <param name="connectionString">Connection string to underlying database.</param>
        /// <returns></returns>
        internal static GridViewEditDataColumn AddGridViewDataColumn(ColumnMeta column, string connectionString)
        {
            GridViewEditDataColumn dataColumn = null;

            // As per 11 Oct 2016, the following evaluation criteria for data type and its column editor are not yet complete.
            // We still has some works to do to deal with picture and blob/document. (--github.com/ganagus)
            // ---
            if ((new TypeCode[] { TypeCode.String, TypeCode.Int64, TypeCode.Int32, TypeCode.Single, TypeCode.Decimal })
                .Contains(column.DataType) && !column.IsForeignKey && string.IsNullOrEmpty(column.EnumTypeName))
            {
                // regular text column, editor => text box
                dataColumn = AddGridViewDataTextColumn(column, dataColumn);
            }
            else if (!string.IsNullOrEmpty(column.EnumTypeName))
            {
                // enum data type column, editor => check box
                dataColumn = AddGridViewEnumColumn(column, dataColumn);
            }
            // foreign key should be rendered in combo box column
            else if (column.IsForeignKey)
            {
                // foreign key column, it's a look up to other table, editor => combo box
                dataColumn = AddGridViewForeignKeyColumn(column, dataColumn, connectionString);
            }
            else if (column.DataType == TypeCode.DateTime)
            {
                // date / datetime column, editor => DevExpress date editor
                dataColumn = new GridViewDataDateColumn();
                if (column.Name.ToLower() == "createddate" || column.Name.ToLower() == "modifieddate")
                {
                    //hide createdby, createddate, modifiedby, modifieddate from edit form
                    //dataColumn.EditFormSettings.Visible = DevExpress.Utils.DefaultBoolean.False;
                }
            }
            else if (column.DataType == TypeCode.Boolean)
            {
                // boolean column, editor => check box
                dataColumn = new GridViewDataCheckColumn();
            }
            else
            {
                // other data type, default to text box
                dataColumn = new GridViewDataTextColumn();
            }

            if (column.IsIdentity)
            {
                dataColumn.EditFormSettings.Visible = DevExpress.Utils.DefaultBoolean.False;
            }

            dataColumn.FieldName    = column.Name;
            dataColumn.Caption      = column.Caption;
            dataColumn.VisibleIndex = column.OrderNo;

            return(dataColumn);
        }
コード例 #2
0
        /// <summary>
        /// Renders a combo box grid view column representing enumeration values.
        /// TODO: this code still does not work, need more effort. (github.com/ganagus).
        /// </summary>
        /// <param name="column">Meta data about column, an instance of <see cref="ColumnMeta"/>.</param>
        /// <param name="dataColumn">An instance of <see cref="GridViewEditDataColumn"/>.</param>
        /// <returns>An instance of <see cref="GridViewDataComboBoxColumn"/>.</returns>
        private static GridViewEditDataColumn AddGridViewEnumColumn(ColumnMeta column, GridViewEditDataColumn dataColumn)
        {
            var enumType = Type.GetType(column.EnumTypeName);

            if (enumType.IsEnum)
            {
                var comboBoxColumn = new GridViewDataComboBoxColumn();
                comboBoxColumn.PropertiesComboBox.ValueType  = enumType;
                comboBoxColumn.PropertiesComboBox.DataSource = Enum.GetValues(enumType);
                dataColumn = comboBoxColumn;
            }
            return(dataColumn);
        }
コード例 #3
0
        /// <summary>
        /// Renders a combo box grid view column, representing data from referenced table.
        /// </summary>
        /// <param name="column">Meta data about column, an instance of <see cref="ColumnMeta"/>.</param>
        /// <param name="dataColumn">An instance of <see cref="GridViewEditDataColumn"/>.</param>
        /// <param name="connectionString">Connection string to the underlying database.</param>
        /// <returns></returns>
        private static GridViewEditDataColumn AddGridViewForeignKeyColumn(ColumnMeta column, GridViewEditDataColumn dataColumn, string connectionString)
        {
            if (column.ReferenceTable.PrimaryKeys.Length > 1)
            {
                throw new ApplicationException(string.Format("Data source for lookup column {0} has more than one primary key.", column.Name));
            }

            var comboBoxColumn = new GridViewDataComboBoxColumn();

            comboBoxColumn.PropertiesComboBox.DataSource = GetLookUpDataSource(column.ReferenceTable, connectionString);
            comboBoxColumn.PropertiesComboBox.ValueField = column.ReferenceTable.PrimaryKeys[0].Name;
            var lookUpDisplayColumn = column.ReferenceTable.Columns.SingleOrDefault(c => c.Id == column.ReferenceTable.LookUpDisplayColumnId);

            if (lookUpDisplayColumn != null)
            {
                comboBoxColumn.PropertiesComboBox.TextField = lookUpDisplayColumn.Name;
            }
            dataColumn = comboBoxColumn;

            return(dataColumn);
        }
コード例 #4
0
        /// <summary>
        /// Renders a regular text box grid view column.
        /// </summary>
        /// <param name="column">Meta data about column, an instance of <see cref="ColumnMeta"/>.</param>
        /// <param name="dataColumn">An instance of <see cref="GridViewEditDataColumn"/>.</param>
        /// <returns>An instance of <see cref="GridViewDataTextColumn"/>.</returns>
        private static GridViewEditDataColumn AddGridViewDataTextColumn(ColumnMeta column, GridViewEditDataColumn dataColumn)
        {
            var textColumn = new GridViewDataTextColumn();

            if (column.DataType == TypeCode.String && column.MaxLength.HasValue)
            {
                textColumn.PropertiesTextEdit.MaxLength = column.MaxLength.Value;
            }
            if (column.Name.ToLower() == "createdby" || column.Name.ToLower() == "modifiedby")
            {
                //hide createdby, createddate, modifiedby, modifieddate from edit form
                //textColumn.EditFormSettings.Visible = DevExpress.Utils.DefaultBoolean.False;
            }
            textColumn.PropertiesTextEdit.ClientSideEvents.KeyDown = "function(s,e) { if (e.htmlEvent.keyCode == ASPxKey.Enter) e.htmlEvent.keyCode = ASPxKey.Tab; }";
            dataColumn = textColumn;
            return(dataColumn);
        }