private void GridModel_ExpandedField(IFieldModel fieldModel) { FieldRow row; if (!ModelRowMap.TryGetValue(fieldModel.ID, out row)) { XRay.LogError("Row not found for model size {0}", ModelRowMap.Count); return; } row.Nodes.Clear(); SyncRows(row.Model.Nodes, row.Nodes); for (int i = 0; i < FieldGrid.Columns.Count; i++) { FieldGrid.AutoResizeColumn(i); } }
void GridModel_UpdateTree() { // if remote then function that calls this should call a diff function with this as a callback if (SelectedNode == null) { return; } DetailsLabel.Text = Model.DetailsLabel; var resizeColumns = new List <DataGridViewColumn>(); for (int i = 0; i < Model.Columns.Count; i++) { if (FieldGrid.ColumnCount <= i) { DataGridViewColumn col = (i == 0) ? new TreeGridColumn() : new DataGridViewTextBoxColumn(); resizeColumns.Add(col); FieldGrid.Columns.Add(col); } FieldGrid.Columns[i].HeaderText = Model.Columns[i]; } while (FieldGrid.Columns.Count > Model.Columns.Count) { FieldGrid.Columns.RemoveAt(FieldGrid.Columns.Count - 1); } SyncRows(Model.RootNodes, FieldGrid.Nodes); foreach (var generic in FieldGrid.Nodes.OfType <FieldRow>()) { generic.Expand(); } foreach (var col in resizeColumns) { FieldGrid.AutoResizeColumn(col.Index); } }