2012-04-30 79 views
1

我不知道爲什麼這不起作用。我試圖在我的表單的列表視圖框中顯示來自我的數據庫的2列。當我使用它時,它不會正確顯示任何數據。在ListView中顯示來自數據庫的多列

("SELECT Person FROM tblPeople" + " SELECT Occur FROM tblpeople" , conn); 

try 
{ 
    SqlDataReader reader = cmd.ExecuteReader(); 

    while (reader.Read()) 
    { 
     listView1.Items.Add(reader["People"].ToString()); 
     listView1.Items.Add(reader["Occur"].ToString()); 
    } 

所以我找我要顯示的數據是這樣的:

John 3 
    James 4 
    Frank 1 

由於名稱從列來來往往的人的數量來了從列好發。

+1

你爲什麼不乾脆把'SELECT人,有發生tblpeople'? – MarioDS

+0

好的提示!我會改變它,但那並不能真正回答我所問的問題。 – user1353517

+0

看看[這個問題](http://stackoverflow.com/questions/473148/c-sharp-listview-how-do-i-add-items-to-columns-2-3-and-4-等等)。 – MarioDS

回答

4

爲了得到想要的效果,你應該設置視圖風格Details,並添加第二列值的子項。

基本上,你應該做這樣的事情:

listView1.View = View.Details; 

    listView1.Columns.Add("People"); 
    listView1.Columns.Add("Occur"); 

    while (reader.Read()) 
    { 
     var item = new ListViewItem(); 
     item.Text = reader["People"].ToString();  // 1st column text 
     item.SubItems.Add(reader["Occur"].ToString()); // 2nd column text 
     listView1.Items.Add(item); 
    } 
+0

令人驚歎的,偉大的作品,看起來不錯!謝謝 – user1353517

+0

@ user1353517:好。但是,如果你想顯示錶格,你可能還會看看DataGridView的;) – digEmAll

0

方法Add()每次將新項目添加到集合時。如果您的項目包含兩個對象的值,最簡單的方法可能是創建一個新項目來封裝它,因此您可以輕鬆將其綁定到您的控件。

考慮這樣的事情:

public class MyNewObject 
{ 
    public string People { get;set; } 
    public string Occur { get;set; } 

    public MyNewObject(string p, string o) 
    { 
     People = p; 
     Occur = o; 
    } 
} 

,然後就

while (reader.Read()) 
{ 
    listView1.Items.Add(new MyNewObject(reader["People"].ToString(),reader["Occur"].ToString())); 
} 
相關問題