Ali Ahmed
Ali Ahmed

Reputation: 489

Convert SqlDataSource to DataTable and DataView

I have the following SqlDataSource and I want to convert it to DataView and read a column from it:

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

This SqlDataSource lets the user enter the number of the Quiz, and it will retrieve the total number of participants in that quiz. I want to convert this SqlDataSource to a DataTable and read a column from it.

So how to do that?

Upvotes: 8

Views: 45394

Answers (2)

Sami
Sami

Reputation: 8419

To get datasource

SqlDataSource SqlDataSource1 = new SqlDataSource(connectionString, selectQuery);

After you got a data source say SqlDataSource1

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

Now you can read a column easily from this dt(DataTable) e.g.

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

Reference

Upvotes: 19

marc_s
marc_s

Reputation: 754258

The SqlDataSource has a Select method which you can call to get back a DataView from your SqlDataSource - see the MSDN documentation on that.

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

DataTable table = view.ToTable();

Is that what you're looking for??

Upvotes: 6

Related Questions