2011-01-09 17 views
0

Ich versuche, mehrere Werte aus der Sitzungsvariablen abzurufen, in denen ich die Werte als Liste gespeichert habe. Hier ist der Code, den ich angewendet habe, aber das gibt mir nur den lst-Wert aus der Liste in der Ausgabe. Ich würde wirklich etwas Hilfe schätzen!Abrufen mehrerer Werte aus der Sitzung zum Auffüllen der 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(); 
     } 

Vielen Dank!

Antwort

2

Zuerst führen Sie mehrere Abfragen aus, von denen jede eine Zeile zurückgibt, und Sie binden diese in Ihrer Schleife erneut ein. Sie sollten alle Zeilen in einer Abfrage abrufen und dann die Ergebnisse an Ihr Steuerelement binden.

Sie werden vielleicht mehr Glück wie diese mit etwas:

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

Die Listbox kann nur an jeweils eine Sache gebunden werden. Deklarieren Sie eine Masterliste, scannen Sie Ihr Array, führen Sie Ihre SQL in der Schleife aus, fügen Sie die Ergebnisse zu einer Masterliste hinzu und binden Sie dann (außerhalb der Schleife) die ListBox2 an die Masterliste.

Verwandte Themen