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(); }
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(); }