2012-02-26 9 views
7

Mam następujący SqlDataSource i chcę, aby przekształcić go DataView i przeczytać kolumnę z nim:Konwersja SqlDataSource do DataTable i 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 

Ten SqlDataSource pozwala użytkownikowi wprowadzić numer Quiz, a to pobierze całkowitą liczbę uczestników tego quizu. Chcę przekonwertować ten SqlDataSource na DataTable i odczytać z niego kolumnę.

Jak to zrobić?

+0

Co masz jest instrukcja SQL, a nie 'SqlDataSource'. Czy masz kod do tworzenia 'SqlDataSource', który nie działa? –

+0

Czytanie kolumn nie jest problemem po przekształceniu w obiekt datatable – Sami

Odpowiedz

6

SqlDataSource ma metodę Select, którą można wywołać w celu odzyskania DataView z SqlDataSource - patrz MSDN documentation on that.

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

DataTable table = view.ToTable(); 

Czy tego właśnie szukasz?

13

Powiem masz SqlDataSource nazwie jak SqlDataSource1

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

Teraz można łatwo odczytać z tej kolumny dt (DataTable) np

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

Reference

Powiązane problemy