1

なぜこれが機能しないのかわかりません。データベースの 2 つの列をフォームのリストビュー ボックスに並べて表示しようとしています。これを使用すると、データが正しく表示されません。

    ("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

名前は People 列から来ており、数字は Occur 列から来ています。

4

2 に答える 2

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);
  }
于 2012-04-30T22:02:28.257 に答える
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()));
}
于 2012-04-30T21:59:14.157 に答える