Example #1
0
        void DisplayData()
        {
            if (SelectedSource != null && messagesList.Columns.Count > 0 && SelectedSource.Count > 0)
            {
                messagesList.Invoke(new Action(() =>
                {
                    messagesList.Items.Clear();
                }));

                QueryEngine qe     = new QueryEngine(SelectedSource);
                var         fields = new List <DDField>();
                foreach (var row in dataGridViewX1.Rows)
                {
                    var dr = row as DataGridViewRow;
                    if (dr.Cells.Count != 5 || !(dr.Cells[0].Value is ComboBoxItem))
                    {
                        continue;
                    }
                    fields.Add((dr.Cells[1].Value as ComboBoxItem).Tag as DDField);
                }
                double progress = 0;
                double count = recordperpage.Value;
                int    c = 0;
                int    start = Math.Min(SelectedSource.Count - 1, (page.Value - 1) * recordperpage.Value), stop = Math.Min(SelectedSource.Count - 1, page.Value * recordperpage.Value);
                foreach (var entry in SelectedSource.GetRange(start, stop - start))
                {
                    c++;
                    progress = ((double)c / count) * 100;
                    messagesList.Invoke(new Action(() =>
                    {
                        ListViewItem item = messagesList.Items.Add(new ListViewItem(qe.GetValueFromEntry(fields[0].Tag, entry)));
                        for (int i = 1; i < fields.Count; i++)
                        {
                            item.SubItems.Add(qe.GetValueFromEntry(fields[i].Tag, entry));
                        }
                        item.Tag = entry;
                        var m    = entry.Message ?? entry.Error.ParsedMessage;
                        if (m != null)
                        {
                            if (m.IsAdmin())
                            {
                                item.ImageKey = "admin";
                            }
                            else
                            {
                                item.ImageKey = "app";
                            }

                            if (entry.Message == null)
                            {
                                item.ForeColor = Color.Red;
                            }
                        }
                        dataDisplay.ReportProgress((int)progress, "Displaying data...");
                    }));
                }
            }
        }