private void SyncDataSourceWithCache <IEquitable>(SyncBindingList <IEquitable> dataSource, List <IEquitable> cache) { lock (cache) { List <IEquitable> list = dataSource.ToList(); foreach (var dto in cache) { int index = list.IndexOf(dto); if (index >= 0) { dataSource[index] = dto; } else { dataSource.Add(dto); } } for (int i = dataSource.Count - 1; i >= 0; i--) { var entry = dataSource[i]; var cacheContainsElement = cache.Contains(entry); if (!cacheContainsElement) { dataSource.RemoveAt(i); } } } }
private void ConfigureQueueEntriesView() { queueEntriesData = new SyncBindingList <QueueEntryDto>(this); queueEntriesView.DataError += DataGridViewDataErrorEventHandler; queueEntriesView.DataSource = new BindingSource(queueEntriesData, null); queueEntriesView.Columns["CallerId"].FillWeight = 100; queueEntriesView.Columns["CallerIdName"].FillWeight = 120; queueEntriesView.Columns["Queue"].FillWeight = 90; queueEntriesView.Columns["QueueDescription"].FillWeight = 100; queueEntriesView.Columns["Position"].FillWeight = 50; queueEntriesView.Columns["Wait"].FillWeight = 50; queueEntriesView.Columns["CallerId"].HeaderText = "Number"; queueEntriesView.Columns["CallerIdName"].HeaderText = "Name"; queueEntriesView.Columns["QueueDescription"].HeaderText = "Description"; queueEntriesView.Columns["Position"].HeaderText = "Pos"; //queueEntriesView.Columns["QueueLocalWeight"].Visible = false; queueEntriesView.SelectionChanged += DataGridViewClearSelection; }
private void ConfigureQueueParamsView() { queueParamsData = new SyncBindingList <QueueParamsDto>(this); queueParamsView.DataSource = new BindingSource(queueParamsData, null); queueParamsView.DataError += DataGridViewDataErrorEventHandler; queueParamsView.Columns["DateReceived"].DefaultCellStyle.Format = configuration.DateTimeFormat; queueParamsView.Columns["Queue"].FillWeight = 90; queueParamsView.Columns["QueueDescription"].FillWeight = 100; queueParamsView.Columns["Calls"].FillWeight = 50; queueParamsView.Columns["Abandoned"].FillWeight = 50; queueParamsView.Columns["Completed"].FillWeight = 60; queueParamsView.Columns["DateReceived"].FillWeight = 80; queueParamsView.Columns["QueueDescription"].HeaderText = "Description"; queueParamsView.Columns["Abandoned"].HeaderText = "Aband"; queueParamsView.Columns["DateReceived"].HeaderText = "Update"; //queueParamsView.Columns["QueueLocalWeight"].Visible = false; if (configuration.HightlightRowIfQueueNotEmpty) { queueParamsView.RowPrePaint += HighlightRowsIfNeeded; } queueParamsView.SelectionChanged += DataGridViewClearSelection; }