2011-01-09 2 views
0

Listとして値を保存したセッション変数から複数の値を取得しようとしています。ここに私が適用したコードがありますが、これは出力のリストから最初の値だけを返します。私は本当にいくつかの助けに感謝します!セッションから複数の値を取得してListBoxに入れるListBox

Array k= yourlist.ToArray(); 
     for (Int32 i = 0; i < k.Length; i++) 
     { 
      Int32 x = Convert.ToInt32(k.GetValue(i)); 
      SqlCommand cmd2 = new SqlCommand("select id,name from plugins where id =" + x, con); 
      SqlDataReader dr2 = cmd2.ExecuteReader(); 
      if (dr2.HasRows) 
      { 
       while (dr.Read()) 
       { 
        ListBox2.DataSource = dr2; 
        ListBox2.DataBind(); 
       } 
      } 

      dr2.Close(); 
      cmd2.Dispose(); 
     } 

ありがとう!

答えて

2

まず、それぞれが1行を返す複数のクエリを実行し、ループ内でこれを再バインドします。 1つのクエリですべての行を取得し、その結果をコントロールにバインドする必要があります。

List<string> ids = yourlist.Select(o => o.ToString()).ToList(); 
string idList = string.Join(",", ids); 
SqlCommand cmd2 = new SqlCommand("select id,name from plugins where id in ("+idList+")", con); 
using(SqlDataReader dr2 = cmd2.ExecuteReader()) 
{ 
    if(dr2.HasRows) 
    { 
     ListBox2.DataSource = dr2; 
     ListBox2.DataBind(); 
    } 
} 

あなたはこのようなものでより多くの運を持っているかもしれません

0

リストボックスは、一度に1つのものにしかバインドできません。マスターリストを宣言し、配列をスキャンし、ループでsqlを実行し、結果をマスターリストに追加してから、ループ外でリストボックス2をマスターリストにバインドします。

関連する問題