2012-02-09 14 views
5

Ho sql query nella mia webapp asp.net e il risultato è memorizzato in datareader. Ogni riga in datareader contiene 10 colonne. Voglio riempire la tabella con questi dati. Tuttavia, non ho idea di come eseguire il loop delle colonne in datareader. Ho bisogno di qualcosa del genere:asp.net sql datareader loop by columns

while (vysledky.Read()) 
{ 
    TableRow row = new TableRow(); 
    tab.Controls.Add(row); 
    foreach (column in ((datareader(row))) //it is not real code 
    { 
     TableCell cell = new TableCell(); 
     cell.Text = datareader(row).content; 
     row.Controls.Add(cell); 
    } 
} 

Spero che tu abbia capito il punto. Grazie

risposta

14

Utilizzare la FieldCount proprietà della SqlDataReader:

while (vysledky.Read()) 
{ 
    // Iterate over each of the fields (columns) in the datareader's current record 
    for (int i = 0; i < vysledky.FieldCount; i++) 
    { 
     var value = vysledky[i]; 

     TableCell cell = new TableCell(); 
     cell.Text = Convert.ToString(value); 
     row.Controls.Add(cell); 
    } 
} 
+0

grazie, è esattamente ciò di cui ho bisogno – polohy

1

Si deve solo farlo attraverso un SqlDataAdapter:

SqlConnection Conn = new SqlConnection(YourConnectionString); 
SqlCommand YourSqlCommand = new SqlCommand(); 
YourSqlCommand.Connection = Conn; 
YourSqlCommand.CommandText = "select * from yourtable"; 

DataTable dt = new DataTable(); 

SqlDataAdapter sda = new SqlDataAdapter(YourSqlCommand); 

sda.Fill(dt); 

Al punto, il DataTable (dt) contiene tutti i dati dalla tua domanda.

+1

Sembra una tabella ASP non un DataTable – Magnus

+0

nice, ci proverò anch'io – polohy

+0

@Magnus ASP table? Non sto seguendo. Questo è sicuramente un 'DataTable' con dati completi dalla query di' SqlCommand'. –