2012-02-26 18 views
7

Tengo el siguiente SqlDataSource y quiero convertirlo en DataView y leer una columna de ella:Convertir SqlDataSource a DataTable y DataView

SELECT  
    dbo.Divisions.DivisionShortcut, 
    COUNT(DISTINCT dbo.UserQuiz.Username) AS [Number of Participants] 
FROM   
    dbo.Divisions 
INNER JOIN 
    dbo.employee ON dbo.Divisions.SapCode = dbo.employee.DivisionCode 
INNER JOIN 
    dbo.UserQuiz ON dbo.employee.Username = dbo.UserQuiz.Username 
INNER JOIN 
    dbo.Quiz ON dbo.UserQuiz.QuizID = dbo.Quiz.QuizID 
WHERE  
    (dbo.Quiz.QuizID = @QuizID) 
GROUP BY 
    dbo.Divisions.DivisionShortcut 

Este SqlDataSource permite al usuario introducir el número de la prueba, y se Recuperará el número total de participantes en ese cuestionario. Quiero convertir este SqlDataSource a un DataTable y leer una columna del mismo.

Entonces, ¿cómo hacer eso?

+0

lo que tienes es una instrucción SQL, no una 'SqlDataSource'. ¿Tiene algún código para la creación de su 'SqlDataSource' que no está funcionando? –

+0

Leer las columnas no es el problema después de la conversión en tabla de datos – Sami

Respuesta

6

El SqlDataSource tiene un método de selección que puede llamar para recuperar un DataView de su SqlDataSource - consulte el MSDN documentation on that.

SqlDataSource dataSource = new SqlDataSource(connectionString, selectSql); 
DataView view = (DataView)dataSource.Select(args); 

DataTable table = view.ToTable(); 

¿Eso es lo que estás buscando ??

13

Permítanme decir que tiene un SqlDataSource nombrado como SqlDataSource1

DataSourceSelectArguments args = new DataSourceSelectArguments(); 
DataView view = (DataView)SqlDataSource1.Select(args); 
DataTable dt = view.ToTable(); 

Ahora se puede leer una columna fácilmente desde esta dt (DataTable), por ejemplo,

int columnNumber = 0; 
for(int i=0;i<dt.Rows.Count;i++) 
{ 
    MessageBox.Show(dt.Rows[i][columnNumber].ToString()); 
} 

Reference