【问题标题】:Showing data from DataSet [closed]显示来自 DataSet 的数据 [关闭]
【发布时间】:2014-09-19 15:56:33
【问题描述】:

我正在使用实体框架从存储过程中获取数据集中的数据,现在我必须在 c# 代码中显示特定列的数据。我尝试了 WriteXML,但它是 xml 格式的。 这是我的代码,我附上了存储过程结果的照片。

DataSet myds = new DataSet();
            myds = new BLRestaurant().GetMenu();
            Console.WriteLine("Please select items from the menu listed:");
            Console.WriteLine("                                      Menu");
            Console.WriteLine(" -----------------------------------------------------------------------------");
            Console.WriteLine(" |  ID    |            ITEM             | ACTUAL PRICE  |  DISCOUNTED PRICE  | ");
            Console.WriteLine(" -----------------------------------------------------------------------------");

【问题讨论】:

  • 你没有说清楚你的问题是什么。
  • 您提供了一个模糊的要求,但不是一个问题?你在问什么?
  • 我想打印数据集中的数据。但是怎么做?

标签: c# asp.net stored-procedures dataset console-application


【解决方案1】:

当您使用 .Net 时,将其输出到 GridView

<asp:GridView Id="MyGridView" runat="server" />

然后在后面的代码中执行如下操作:

    private LoadGridView()
    {
        MyGridView.DataSource = GetMyData();
        MyGridView.DataBind();
    }

    private DataTable GetMyData()
    {
        DataTable result = new DataTable();
        SqlConnection con = new SqlConnection(SQLConn);
        SqlCommand cmd = new SqlCommand("[MyStoreProcedure]", con);
        cmd.CommandType = CommandType.StoredProcedure;
        try
        {
            con.Open();
            //Define parameters here
            SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            adapter.Fill(result);
        }
        catch (Exception ex)
        {
            //trap for errors
        }
        finally
        {
            con.Close();
            con.Dispose();
            cmd.Dispose();
        }
        return result;
    }

即使您不想要 GridView,也最好将数据放入 DataTable 中,因为您可以使用以下语句对其进行操作和迭代:

    foreach(DataRow dr in MyDataTable.Rows)
    {
        //do some stuff with the row
        //find a value in a column?
        string fieldText = dr["ColumnA"].Text;
    }

【讨论】:

    【解决方案2】:
    foreach(DataRow row in myds.Tables[0].Rows)
    {    
        var id = row["ItemID"];
        var name = row["ItemName"];
    }
    

    将为您提供显示数据。如果您正在寻找更通用的内容,您可以遍历表格并获取如下列名:

    IEnumerable<string> columns = tbl.Columns.Cast<DataColumn>().Select(x => x.ColumnName);
    

    您还可以合并前 2 行,因为实例化一个立即被覆盖的 DataSet 是糟糕的内存管理:

    DataSet myds = new BLRestaurant().GetMenu();
    

    【讨论】:

    • 有什么方法可以直接从数据集中显示数据而不使用数据表?
    • @Umm-e-Habiba 你怎么知道在数据集中使用哪个表而不说哪个?
    • @Umm-e-Habiba 您需要指定一个表,就像在 sql 中进行选择时指定一个表一样
    • 我从存储过程而不是从表中获取数据,这就是为什么我想直接从数据集中打印数据。
    • @Umm-e-Habiba 所有数据都在 DataSet 中,其中包含一组表。然后,您可以遍历表中的行,如图所示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-13
    • 2013-06-06
    相关资源
    最近更新 更多