将SqlDataSource转换为DataTable和DataView

时间:2012-02-26 11:38:26

标签: c# asp.net sql

我有以下SqlDataSource,我想将其转换为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

SqlDataSource允许用户输入测验的编号,并将检索该测验中的参与者总数。我想将此SqlDataSource转换为DataTable并从中读取一列。

那怎么做?

2 个答案:

答案 0 :(得分:15)

我说你有SqlDataSource名为SqlDataSource1

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

现在,您可以从此dt(DataTable)轻松读取列,例如

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

Reference

答案 1 :(得分:6)

SqlDataSource有一个Select方法,您可以调用该方法从SqlDataSource获取DataView - 请参阅MSDN documentation on that

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

DataTable table = view.ToTable();

这就是你要找的东西吗?