private void btnSort_Click(object sender, EventArgs e) { listView1.Items.Clear(); listView1.Columns.Clear(); listView1.Groups.Clear(); sortedList.Clear(); if (cmbSortBy.SelectedIndex != 0) { if (cmbSortBy.SelectedIndex == 1) { //sort by points foreach (Animal animal in form1.animalList) { Animal temp = new Animal(); temp.import(animal); sortedList.Add(temp); } listView1.Columns.Add(new ColumnHeader("Name")); listView1.Columns.Add(new ColumnHeader("Points")); listView1.Columns[0].Text = "Name"; listView1.Columns[1].Text = "Points"; listView1.Columns[0].Width = listView1.Width / 2; listView1.Columns[1].Width = listView1.Width / 2 - 10; sortedList.Sort(delegate(Animal first, Animal second) { return second.points.CompareTo(first.points); }); foreach (Animal animal in sortedList) { ListViewItem item = new ListViewItem(new string[] { animal.name, animal.points.ToString() }); if (chkHighlight.Checked == true && animal.points > nmbLimit.Value) { item.BackColor = Color.PaleVioletRed; } else { item.BackColor = Color.White; } listView1.Items.Add(item); } } else if (cmbSortBy.SelectedIndex == 2) { listView1.Columns.Add(new ColumnHeader("Name")); listView1.Columns.Add(new ColumnHeader("ID")); listView1.Columns[0].Text = "Name"; listView1.Columns[1].Text = "ID"; listView1.Columns[0].Width = listView1.Width / 2; listView1.Columns[1].Width = listView1.Width / 2 - 10; foreach (Animal animal in form1.animalList) { Boolean added = false; foreach (ListViewGroup group in listView1.Groups) { if (group.Header.Equals(animal.currentReseacher())) { ListViewItem item = new ListViewItem(new[] { animal.name, animal.id.ToString() }); item.Group = group; listView1.Items.Add(item); added = true; } } if (!added) { listView1.Groups.Add(new ListViewGroup(animal.currentReseacher())); foreach (ListViewGroup group in listView1.Groups) { if (group.Header.Equals(animal.currentReseacher())) { ListViewItem item = new ListViewItem(new[] { animal.name, animal.id.ToString() }); item.Group = group; listView1.Items.Add(item); } } } } } else if (cmbSortBy.SelectedIndex == 3) { int minWeight = (int)nmbMinWeight.Value; foreach (Animal animal in form1.animalList) { if (animal.weight > minWeight) { sortedList.Add(animal); } } listView1.Columns.Add(new ColumnHeader("Name")); listView1.Columns.Add(new ColumnHeader("Weight")); listView1.Columns[0].Text = "Name"; listView1.Columns[1].Text = "Weight"; listView1.Columns[0].Width = listView1.Width / 2; listView1.Columns[1].Width = listView1.Width / 2 - 10; sortedList.Sort(delegate(Animal first, Animal second) { return second.weight.CompareTo(first.weight); }); foreach (Animal animal in sortedList) { ListViewItem item = new ListViewItem(new string[] { animal.name, animal.weight.ToString() }); listView1.Items.Add(item); } } else if (cmbSortBy.SelectedIndex == 4) { listView1.Columns.Add(new ColumnHeader("Name")); listView1.Columns.Add(new ColumnHeader("ID")); listView1.Columns[0].Text = "Name"; listView1.Columns[1].Text = "ID"; listView1.Columns[0].Width = listView1.Width / 2; listView1.Columns[1].Width = listView1.Width / 2 - 10; foreach (Animal animal in form1.animalList) { if (animal.currentProjectDate().Year < int.Parse(nmbDateLimit.Value.ToString())) { continue; } Boolean added = false; foreach (ListViewGroup group in listView1.Groups) { string phrase = animal.currentProjectDate().ToString("MMMM, dd, yyyy"); if (group.Header.Equals(phrase)) { ListViewItem item = new ListViewItem(new[] { animal.name, animal.id.ToString() }); item.Group = group; listView1.Items.Add(item); added = true; } } if (!added) { string phrase = animal.currentProjectDate().ToString("MMMM, dd, yyyy"); listView1.Groups.Add(new ListViewGroup(phrase)); foreach (ListViewGroup group in listView1.Groups) { if (group.Header.Equals(phrase)) { ListViewItem item = new ListViewItem(new[] { animal.name, animal.id.ToString() }); item.Group = group; listView1.Items.Add(item); } } } } List<DateTime> dateList = new List<DateTime>(); foreach (ListViewGroup group in listView1.Groups) { dateList.Add(DateTime.Parse(group.Header.ToString())); } dateList.Sort(delegate(DateTime first, DateTime second) { return DateTime.Compare(second, first); }); List<ListViewGroup> groupList = new List<ListViewGroup>(); foreach (ListViewGroup group in listView1.Groups) { groupList.Add(group); } listView1.Groups.Clear(); foreach (DateTime time in dateList) { foreach (ListViewGroup group in groupList) { if (time.ToString("MMMM, dd, yyyy").Equals(group.Header)) { listView1.Groups.Add(group); } } } } } else if (cmbSearchBy.SelectedIndex != 0) { if (cmbSearchBy.SelectedIndex == 1) { listView1.Columns.Add(new ColumnHeader("Name")); listView1.Columns.Add(new ColumnHeader("ID")); listView1.Columns[0].Text = "Name"; listView1.Columns[1].Text = "ID"; listView1.Columns[0].Width = listView1.Width / 2; listView1.Columns[1].Width = listView1.Width / 2 - 10; foreach (Animal animal in form1.animalList) { if (animal.find(form1, txtSearch.Text)) { ListViewItem item = new ListViewItem(new string[] { animal.name, animal.id.ToString() }); listView1.Items.Add(item); } } } else if (cmbSearchBy.SelectedIndex == 2) { foreach (Animal animal in form1.animalList) { if (txtSearch.Text.Equals(animal.researchHistory.Rows[animal.researchHistory.Rows.Count-1].ItemArray[3].ToString())) { sortedList.Add(animal); } } listView1.Columns.Add(new ColumnHeader("Name")); listView1.Columns.Add(new ColumnHeader("ID")); listView1.Columns.Add(new ColumnHeader("Start Date")); listView1.Columns.Add(new ColumnHeader("Completion Date")); listView1.Columns[0].Text = "Name"; listView1.Columns[1].Text = "ID"; listView1.Columns[2].Text = "Start Date"; listView1.Columns[3].Text = "Completion Date"; listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); sortedList.Sort(delegate(Animal first, Animal second) { return first.name.CompareTo(second.name); }); foreach (Animal animal in sortedList) { ListViewItem item = new ListViewItem(new string[] { animal.name, animal.id.ToString(), animal.researchHistory.Rows[animal.researchHistory.Rows.Count-1].ItemArray[1].ToString(), animal.researchHistory.Rows[animal.researchHistory.Rows.Count-1].ItemArray[4].ToString()}); listView1.Items.Add(item); } } } }