2015-02-10 32 views
1
List<Person> persons = new List<Person>(); 
persons.Add(new Person(){Id = 0, 
         Birthday = DateTime.Now, 
         Name="Jack"});    
persons.Add(new Person(){Id = 1, 
         Birthday = DateTime.Now, 
         Name = "Anna"}); 
persons.Add(new Person(){Id = 2, 
         Birthday = DateTime.Now, 
         Name = "John"}); 
persons.Add(new Person(){Id = 3, 
         Birthday = DateTime.Now, 
         Name = "Sally"}); 
persons.Add(new Person(){Id = 4, 
         Birthday = DateTime.Now, 
         Name = "Robert"}); 

objectListView1.SetObjects(persons); 

我想要做的是,因爲它們顯示從對象列表視圖排序的值以相同的順序複製到文本框中,但他們總是以與添加在「人員」列表中相同的順序顯示。對象列表視圖如何在他們的顯示順序的值複製

private void button1_Click(object sender, EventArgs e) 
    { 
    textBox1.Clear(); 
    foreach (var person in objectListView1.Objects) 
    { 
     Person p = person as Person; 
     textBox1.Text += p.Id + "\t" + p.Name + "\t" + p.Birthday.ToShortDateString() + "\r\n"; 
    } 
    } 

這是示例應用程序的幾張照片,顯示當前的問題: Picture 1Picture2

沒有人有任何想法如何做到這一點?

編輯:我使用的DLL從這個項目:www.codeproject.com/Articles/16009/A-Much-Easier-to-Use-ListView

+0

他們如何在顯示器中訂購?按名字? – sean 2015-02-10 21:45:25

+0

嗨,他們是按照我認爲的ID排序的,但是這個順序可以改變點擊其中的一個列,就像你在照片2中看到的一樣,所以一次可以是0,1,2,3,4在下一個2中, 1,4,3等。我想使用當前顯示的順序和複製值,它們與顯示的對象列表中顯示的方式相同 – 2015-02-10 21:53:48

回答

0

列表可在添加項目的順序排列。我猜測顯示器是按名稱排序的。您可以通過獲取最後一個排序列,按照與顯示方式相同的方式對它們進行排序。我想我具有獲取該列名稱/順序的正確屬性。

private void button1_Click(object sender, EventArgs e) 
    { 
    textBox1.Clear(); 

    List<Person> people = objectListView1.Objects.Cast<Person>().ToList(); 

    if (objectListView1.LastSortColumn != null) 
    { 
     // check to see if this "Name" property is the right one 
     switch (objectListView1.LastSortColumn.Name) 
     { 
      case "Name": 
       if (objectListView1.LastSortOrder == SortOrder.Descending) 
        people = people. OrderByDescending(o => o.Name).ToList(); 
       else 
        people = people.OrderBy(o => o.Name).ToList(); 
       break;             
      case "Id": 
       if (objectListView1.LastSortOrder == SortOrder.Descending) 
        people = people. OrderByDescending(o => o.Id).ToList(); 
       else 
        people = people.OrderBy(o => o.Id).ToList(); 
       break; 
      default: 
       break; 
     } 
    } 

    foreach (var person in people) 
    { 
     Person p = person as Person; 
     textBox1.Text += p.Id + "\t" + p.Name + "\t" + p.Birthday.ToShortDateString() + "\r\n"; 
    } 
    } 
+0

對不起,這不起作用,我不能使用OrderBy :( – 2015-02-10 22:00:12

+0

)objectListView1是什麼類型。對象? – sean 2015-02-10 22:06:21

+0

它們是「Person」類型,它是一個簡單的類,它包含幾個自動實現的屬性,如Name,Id和Birthday – 2015-02-10 22:14:42

相關問題