2012-04-30 4 views
1

これがなぜ機能しないのか分かりません。私は自分のフォーム上のリストビューボックスに自分のデータベースから2列を並べて表示しようとしています。これを使用すると、データが正しく表示されません。名前は、カラムの人々から来ていると数字が発生し、カラムから来ているとListViewのデータベースから複数の列を表示

John 3 
    James 4 
    Frank 1 

("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()); 
    } 

だから私はこのように表示するために自分のデータを探しています。

+1

なぜあなたはちょうどtblpeople' FROM発生し、 'SELECT人を入れていませんの? – 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に表示スタイルを設定し、サブアイテムとして第2列の値を追加する必要があります。

基本的に、あなたはこのような何か必要があります。

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()は、新しいアイテムをコレクションに追加するたびに追加します。アイテムが2つのオブジェクトの値で構成されている場合、おそらく最も簡単な方法は、カプセル化する新しいアイテムを作成してコントロールに簡単にバインドすることです。

このような何か考えてみましょう。その後、

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())); 
} 
関連する問題