【问题标题】:Convert SqlDataSource to DataTable and DataView将 SqlDataSource 转换为 DataTable 和 DataView
【发布时间】:2012-03-16 04:51:39
【问题描述】:

我有以下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 并从中读取一列。

那该怎么做呢?

【问题讨论】:

  • 您拥有的是 SQL 语句,而不是 SqlDataSource。您是否有任何用于创建 SqlDataSource 的代码不起作用?
  • 转换成数据表后,读取列不是问题

标签: c# asp.net sql


【解决方案1】:

我说你有一个名为 SqlDataSource1 的SqlDataSource

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

【讨论】:

    【解决方案2】:

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

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

    这就是你要找的吗??

    【讨论】:

      猜你喜欢
      • 2017-10-30
      • 2011-03-13
      • 1970-01-01
      • 2010-12-06
      • 2014-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-14
      相关资源
      最近更新 更多