示例#1
0
        public void ProcessModelChange()
        {
            if (Disposing || IsDisposed)
            {
                return;
            }

            refreshing = true;

            ReadOnly = Model.is_readonly();

            CustomDataGridViewTextBoxColumn[] columns = new CustomDataGridViewTextBoxColumn[Model.get_column_count()];
            for (int i = 0; i < Model.get_column_count(); i++)
            {
                CustomDataGridViewTextBoxColumn column = new CustomDataGridViewTextBoxColumn();
                column.AdditionalColumnWidth = AdditionalColumnWidth;
                column.HeaderText            = Model.get_column_caption(i);
                Type columnValueType;
                switch (Model.get_column_type(i))
                {
                case GridModelWrapper.ColumnType.DatetimeType:
                    columnValueType = typeof(DateTime);//! needs corresponding set_field or conversion to string. see PushValue
                    column.DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopLeft;
                    break;

                case GridModelWrapper.ColumnType.NumericType:
                    columnValueType = typeof(long);
                    column.DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight;
                    break;

                case GridModelWrapper.ColumnType.FloatType:
                    columnValueType = typeof(double);
                    column.DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight;
                    break;

                default:
                    columnValueType = typeof(string);
                    column.DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopLeft;
                    break;
                }
                if (null != columnValueType)
                {
                    column.ValueType = columnValueType;
                }

                column.SortMode   = DataGridViewColumnSortMode.Programmatic;
                column.FillWeight = 0.001F;

                columns[i] = column;
            }

            try
            {
                Columns.Clear();
            }
            catch (System.InvalidOperationException)
            {
                CancelEdit();
                Columns.Clear();
            }

            Columns.AddRange(columns);

            // restore sorting glyphs
            {
                List <int> indexes;
                List <int> orders;
                Model.sort_columns(out indexes, out orders);
                int l = 0;
                foreach (int n in indexes)
                {
                    DataGridViewColumn column = Columns[n];
                    column.HeaderCell.SortGlyphDirection = (orders[l] == 1) ? SortOrder.Ascending : SortOrder.Descending;
                    ++l;
                }
            }

            refreshing = false;
            ProcessModelRowsChange();
        }
示例#2
0
        public void ProcessModelChange()
        {
            if (Disposing || IsDisposed)
            return;

              refreshing = true;

              ReadOnly = Model.is_readonly();

              CustomDataGridViewTextBoxColumn[] columns = new CustomDataGridViewTextBoxColumn[Model.get_column_count()];
              for (int i = 0; i < Model.get_column_count(); i++)
              {
            CustomDataGridViewTextBoxColumn column= new CustomDataGridViewTextBoxColumn();
            column.AdditionalColumnWidth = AdditionalColumnWidth;
            column.HeaderText = Model.get_column_caption(i);
            Type columnValueType;
            switch (Model.get_column_type(i))
            {
              case GridModelWrapper.ColumnType.DatetimeType:
            columnValueType = typeof(DateTime);//! needs corresponding set_field or conversion to string. see PushValue
            column.DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopLeft;
            break;
              case GridModelWrapper.ColumnType.NumericType:
            columnValueType = typeof(long);
            column.DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight;
            break;
              case GridModelWrapper.ColumnType.FloatType:
            columnValueType = typeof(double);
            column.DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight;
            break;
              default:
            columnValueType = typeof(string);
            column.DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopLeft;
            break;
            }
            if (null != columnValueType)
              column.ValueType = columnValueType;

            column.SortMode = DataGridViewColumnSortMode.Programmatic;
            column.FillWeight = 0.001F;

            columns[i]= column;
              }

              try
              {
            Columns.Clear();
              }
              catch (System.InvalidOperationException)
              {
            CancelEdit();
            Columns.Clear();
              }

              Columns.AddRange(columns);

              // restore sorting glyphs
              {
            List<int> indexes;
            List<int> orders;
            Model.sort_columns(out indexes, out orders);
            int l = 0;
            foreach (int n in indexes)
            {
              DataGridViewColumn column = Columns[n];
              column.HeaderCell.SortGlyphDirection = (orders[l] == 1) ? SortOrder.Ascending : SortOrder.Descending;
              ++l;
            }
              }

              refreshing = false;
              ProcessModelRowsChange();
        }