将SqlDataSource转换成DataTable和DataView

8

我有以下的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并从中读取一列。
那么该如何做呢?

1
你所拥有的是一个 SQL 语句,而不是一个 SqlDataSource。你是否有创建 SqlDataSource 的代码出现问题? - Metro Smurf
转换为数据表后读取列不是问题。 - Sami
2个回答

19
获取数据源
SqlDataSource SqlDataSource1 = new SqlDataSource(connectionString, selectQuery);

在你获取到一个数据源,比如 SqlDataSource1 之后
DataSourceSelectArguments args = new DataSourceSelectArguments();
DataView view = (DataView)SqlDataSource1.Select(args);
DataTable dt = view.ToTable();

现在你可以轻松地从这个数据表(dt)中阅读一列,例如。
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());
}

参考资料


6

SqlDataSource有一个Select方法,您可以调用该方法从SqlDataSource中获取DataView - 参见MSDN文档

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

DataTable table = view.ToTable();

那是你在寻找的吗?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接