private void RestoreSortingColumn(DataGridViewColumn previousSortColumn, SortOrder previousSortOrder, DataGridViewColumn defaultSortColumn) { // SCTX-501 preserve the sorting column if ((previousSortColumn == null) || !NetworksGridView.Columns.Contains(previousSortColumn)) { previousSortColumn = defaultSortColumn; previousSortOrder = SortOrder.Ascending; // try to get the old sort order from the SortGlyph foreach (System.Windows.Forms.DataGridViewColumn column in NetworksGridView.Columns) { if (column.HeaderCell.SortGlyphDirection != SortOrder.None) { previousSortColumn = column; previousSortOrder = column.HeaderCell.SortGlyphDirection; break; } } } if (previousSortColumn != null) { // clear any old sort glyphs; this is necessary as a result of the // change for CA-45643 (MTU column only added for Cowley or greater pools) foreach (System.Windows.Forms.DataGridViewColumn column in NetworksGridView.Columns) { column.HeaderCell.SortGlyphDirection = SortOrder.None; } NetworksGridView.Sort( previousSortColumn, previousSortOrder == SortOrder.Ascending ? ListSortDirection.Ascending : ListSortDirection.Descending); } }
public void UpdateData() { _dispatcher.Update(); var networks = _dispatcher.Networks; var selectedRows = NetworksGridView.SelectedRows; DataGridViewRow selectedRow = null; string selectedData = ""; if (selectedRows.Count != 0) { selectedRow = selectedRows[0]; selectedData = selectedRow.Cells[0].Value.ToString(); } ListSortDirection sortOrder = ListSortDirection.Ascending; DataGridViewColumn sortedCollumn = null; var sorted = false; if (NetworksGridView.SortOrder != SortOrder.None) { sorted = true; sortOrder = NetworksGridView.SortOrder == SortOrder.Ascending ? ListSortDirection.Ascending : ListSortDirection.Descending; sortedCollumn = NetworksGridView.SortedColumn; } NetworksGridView.Rows.Clear(); foreach (var network in networks) { NetworksGridView.Rows.Add(network.Name, network.ConnectionQuality, network.AuthenticationType, network.MAC); } if (sorted) { NetworksGridView.Sort(sortedCollumn, sortOrder); } foreach (DataGridViewRow row in NetworksGridView.Rows) { if (row.Cells[0].Value.ToString().Equals(selectedData)) { row.Selected = true; break; } } this.UpdateButtons(); }
private void AddNetworkColumns() { // catch the sorting column and sorting order, so they could be restored after the columns are added to the grid (SCTX-501) DataGridViewColumn previousSortColumn = NetworksGridView.SortedColumn; SortOrder previousSortOrder = NetworksGridView.SortOrder == SortOrder.None ? SortOrder.Ascending : NetworksGridView.SortOrder; try { NetworksGridView.SuspendLayout(); NetworksGridView.Columns.Clear(); NetworksGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.ImageColumn, this.NameColumn, this.DescriptionColumn, this.NicColumn, this.VlanColumn, this.AutoColumn, this.LinkStatusColumn, this.NetworkMacColumn }); //CA-47050: the Description column should be autosized to Fill, but should not become smaller than a minimum //width, which here is chosen to be the column header width. To find what this width is set temporarily the //column's autosize mode to ColumnHeader. this.DescriptionColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.ColumnHeader; int storedWidth = this.DescriptionColumn.Width; this.DescriptionColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; this.DescriptionColumn.MinimumWidth = storedWidth; // add MTU to grid view on Network tab for pools and hosts, for Cowley or greater only (CA-45643) if (Helpers.CowleyOrGreater(_xenObject.Connection)) { NetworksGridView.Columns.Add(this.MtuColumn); } } finally { NetworksGridView.ResumeLayout(); } // restore the sorting column (SCTX-501) RestoreSortingColumn(previousSortColumn, previousSortOrder, NicColumn); }
private void copyToolStripMenuItem_Click(object sender, EventArgs e) { Point pt = NetworksGridView.PointToClient(new Point(contextMenuStrip1.Left, contextMenuStrip1.Top)); DataGridView.HitTestInfo info = NetworksGridView.HitTest(pt.X, pt.Y); if (info != null && info.RowIndex >= 0 && info.RowIndex < NetworksGridView.Rows.Count) { DataGridViewRow row = NetworksGridView.Rows[info.RowIndex]; if (row != null) { string t = row.Cells[info.ColumnIndex].Value.ToString(); if (String.IsNullOrEmpty(t)) { return; } Clip.SetClipboardText(t); } } }
public void BuildList() { Program.AssertOnEventThread(); if (!this.Visible) { return; } if (InBuildList) { return; } InBuildList = true; try { if (XenObject == null || XenObject.Locked) { return; } if (!XenObject.Connection.CacheIsPopulated) { return; } if (XenObject is VM) { DeregisterEventsOnGridRows(); VIF selectedVIF = SelectedVif; VM vm = XenObject as VM; NetworksGridView.SuspendLayout(); NetworksGridView.Rows.Clear(); List <VIF> vifs = vm.Connection.ResolveAll(vm.VIFs); vifs.Sort(); // CA-8981 - Listen for guest metric changes which is necessary for IP Address updates VM_guest_metrics vmGuestMetrics = vm.Connection.Resolve(vm.guest_metrics); if (vmGuestMetrics != null) { vmGuestMetrics.PropertyChanged += Server_PropertyChanged; } var vifRowsToAdd = new List <VifRow>(); foreach (var vif in vifs) { var network = vif.Connection.Resolve(vif.network); if (network != null && // CA-218956 - Expose HIMN when showing hidden objects (network.IsGuestInstallerNetwork() && !XenAdmin.Properties.Settings.Default.ShowHiddenVMs)) { continue; // Don't show the guest installer network in the network tab (CA-73056) } vifRowsToAdd.Add(new VifRow(vif)); } NetworksGridView.Rows.AddRange(vifRowsToAdd.ToArray()); bool selected = true; if (selectedVIF != null) { foreach (VifRow row in NetworksGridView.Rows) { // Cannot compare opaque_ref as VIFs get destroyed / recreated on each edit. if (row.Vif.device == selectedVIF.device) { row.Selected = true; break; } } } if (!selected && NetworksGridView.Rows.Count > 0) { NetworksGridView.Rows[0].Selected = true; } } else if (XenObject is Host || XenObject is Pool) { DeregisterEventsOnGridRows(); XenAPI.Network selectedNetwork = SelectedNetwork; NetworksGridView.SuspendLayout(); NetworksGridView.Rows.Clear(); XenAPI.Network[] networks = XenObject.Connection.Cache.Networks; Array.Sort <XenAPI.Network>(networks); List <NetworkRow> networkRowsToAdd = new List <NetworkRow>(); for (int i = 0; i < networks.Length; i++) { if (!networks[i].Show(XenAdmin.Properties.Settings.Default.ShowHiddenVMs)) { continue; } networkRowsToAdd.Add(new NetworkRow(networks[i], XenObject)); } NetworksGridView.Rows.AddRange(networkRowsToAdd.ToArray()); // The following update causes this to be a lot slower with many networks. Alot! CA-43944 //foreach(NetworkRow r in NetworksGridView.Rows) //r.UpdateDefaultCellStyle(); // Has to be done again after adding to the grid view, even though it's already called in the constructor if (selectedNetwork != null) { foreach (NetworkRow row in NetworksGridView.Rows) { if (row.Network.opaque_ref == selectedNetwork.opaque_ref && selectedNetwork.Show(XenAdmin.Properties.Settings.Default.ShowHiddenVMs)) { row.Selected = true; break; } } } } } finally { if (NetworksGridView.SortedColumn != null) { NetworksGridView.Sort( NetworksGridView.SortedColumn, NetworksGridView.SortOrder == SortOrder.Ascending ? ListSortDirection.Ascending : ListSortDirection.Descending); } NetworksGridView.ResumeLayout(); InBuildList = false; } }
public override void SelectDefaultControl() { NetworksGridView.Select(); }