从返回类型 DataSet 获取输出并将其显示在 Gridview 中

Posted

技术标签:

【中文标题】从返回类型 DataSet 获取输出并将其显示在 Gridview 中【英文标题】:Getting output from return type DataSet and displaying it in a Gridview 【发布时间】:2019-02-08 17:18:19 【问题描述】:

我试图从返回类型为 DataSet 的方法中获取输出,并在 GridView 中使用它,但输出没有反映。 任何人都可以请建议如何获得输出。

  public DataSet GetData()

    try
    
        SqlConnection conn = new SqlConnection(connectionString);
        if (conn.State == ConnectionState.Closed)
        
            conn.Open();
        

        String sql = "Select top 100 * from SEQUENCE";
        SqlCommand cmd = new SqlCommand(sql, conn);
        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
        DataSet output = new DataSet();

        adapter.Fill(output);
        conn.Close();

        return (output);     

    
    catch (Exception ex)
    
        ScriptManager.RegisterStartupScript(this, GetType(),
                   "ServerControlScript", ex.Message, true);

        return (null);

    





    Home home = new Home();
    Output=home.GetData();
    GridViewOutput.DataSource = Output.Tables["Out"];
    GridViewOutput.DataBind();

【问题讨论】:

【参考方案1】:

尝试移动您声明output 并将其返回的位置,如下所示。

我更改了您声明网格视图数据源的部分。您应该能够将数据集数据源声明为方法本身。

看看这个关于数据集与数据表的线程Datatable vs Dataset 一个 DataSet 可以包含多个表。但是,如果您只返回单个结果集,则 DataTable 而不是 DataSet 可能更有意义。

只需将方法类型更改为 DataTable。声明它的来源,如下所示。

public DataSet GetData()

    //Move where you declare output ot here
    DataSet output = new DataSet();
    try
    
        SqlConnection conn = new SqlConnection(connectionString);
        if (conn.State == ConnectionState.Closed)
        
            conn.Open();
        

        String sql = "Select top 100 * from SEQUENCE";
        SqlCommand cmd = new SqlCommand(sql, conn);
        SqlDataAdapter adapter = new SqlDataAdapter(cmd);


        adapter.Fill(output);
        conn.Close();



    
    catch (Exception ex)
    
        ScriptManager.RegisterStartupScript(this, GetType(),
                   "ServerControlScript", ex.Message, true);

        return (null);

    
     //And move the return to here 
     return output;




    //Should just need this to display the data
    GridViewOutput.DataSource = GetData();
    GridViewOutput.DataBind();

在 c# 中使用 SQL 时的最后一件事我倾向于使用 using 语句。它使代码更清晰,并为您处理资源的处置When should I use the using Statement?。如果您选择使用它,您的代码将如下所示:

 public DataTable GetData()
   
      //Move where you declare output ot here
      var output = new DataTable();

      using (var conn = new SqlConnection())
      


         try
            
                conn.ConnectionString = //Your DataBase Connection;

                String sql = "Select top 100 * from SEQUENCE";
                SqlCommand cmd = new SqlCommand(sql, conn);
                cmd.commandType = commandType.Text;


                Var adapter = new SqlDataAdapter(cmd);


                adapter.Fill(output);



            
            catch (Exception ex)
            
                ScriptManager.RegisterStartupScript(this, GetType(),
                           "ServerControlScript", ex.Message, true);

                return (null);

            
             //And move the return to here 
             return output;
       
            


   //Should just need this to display the data
   GridViewOutput.DataSource = GetData();
   GridViewOutput.DataBind();

【讨论】:

以上是关于从返回类型 DataSet 获取输出并将其显示在 Gridview 中的主要内容,如果未能解决你的问题,请参考以下文章

如何从转义闭包中获取值并将其分配给变量并在表格视图中显示

从外部 URL 获取 JSON 数据并将其以纯文本形式显示在 div 中

存储过程返回到 C# .Net 中的 DataSet

C#程序,将数据从dataset导出到excel表格里的时间类型为啥显示成“#”号呢

如何使用控制台应用程序获取输出并将其显示到 MFC Dialog StaticText

从 DataSet 中的 DataTables 输出数据