0

DB から取得した 3 つの列 (1996 年、1997 年、1998 年) があります。それらをリストビューで表示したい。

私の問題は、すべての最初の列のデータが完全に表示されることですが、2 番目の列のデータは最初の列の終了後に開始されます。また、最後の 2 つの列が一緒になります。

{
     listView1.Items.Clear();
     SqlConnection cnn = new SqlConnection(tools.ConnectionString);
     SqlCommand cmd = new SqlCommand("alti", cnn);
     cmd.CommandType = CommandType.StoredProcedure;

     cmd.Parameters.AddWithValue("@name", comboBox1.SelectedItem);
     cnn.Open();
     SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

     while (dr.Read())
     {
         int yil = Convert.ToInt32(dr["yil"].ToString());
         ListViewItem lvitem = new ListViewItem();

         if (yil == 1996)
         {
             lvitem.Text =(dr["OrderID"].ToString() + "--" + dr["Fiyat"].ToString() );
         }
         else if (yil == 1997)
         {
             lvitem.SubItems.Add(dr["OrderID"].ToString() + "--" + dr["Fiyat"].ToString());
         }
         else if (yil == 1998)
         {
             lvitem.SubItems.Add(dr["OrderID"].ToString() + "--" + dr["Fiyat"].ToString());                   
         }
             listView1.Items.Add(lvitem);                   
     }
         cnn.Close();
}
4

2 に答える 2

0

Listview の 1 列目は Items.Add() を作成する場所で、2 列目以降は SubItems.Add() を使用する場所です。つまり、2 列目以降は 2 列目に結合されます。

説明すると、次のようになります。

ListViewItem itm = listView1.Items.Add('First Column');
itm.SubItems.Add('Second Column');
itm.SubItems.Add('Third Column');

あなたの場合、複数のレコードがピボットテーブルの複数の列になるため、少し注意が必要です。したがって、次のようにリストビューに追加する前に、1996 年から 1997 年までのすべての年を収集することをお勧めします。

 String for96='',for97='',for98='';

 while (dr.Read())
     {
         int yil = Convert.ToInt32(dr["yil"].ToString());


         if (yil == 1996)
         {
             for96 =(dr["OrderID"].ToString() + "--" + dr["Fiyat"].ToString() );
         }
         else if (yil == 1997)
         {
             for97 = dr["OrderID"].ToString() + "--" + dr["Fiyat"].ToString();
         }
         else if (yil == 1998)
         {
             for98=dr["OrderID"].ToString() + "--" + dr["Fiyat"].ToString();                
         }
         if (!String.IsNotNullOrEmpty(for96) && !String.IsNotNullOrEmpty(for97) && !String.IsNotNullOrEmpty(for98))
         {
             ListViewItem itm = new ListViewItem();
             itm = listView1.Items.Add(for96);
             itm.SubItems.Add(for97);          
             itm.SubItems.Add(for98);      

             for96='',for97='',for98='';
         }

     }
于 2013-08-10T00:02:59.287 に答える