Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以SqlDataReader的形式返回数据_C#_Asp.net_Sql Server - Fatal编程技术网

C# 以SqlDataReader的形式返回数据

C# 以SqlDataReader的形式返回数据,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我正在从事一个ASP.NET项目。我在SQL Server中有一个存储过程,它返回要在图表中显示的数据列表。此存储过程工作正常。我需要将返回数据作为SqlDataReader对象传递到Chart.DataBindTable 我这样调用存储过程: string spName = "spFetchDetails"; DbCommand dbCommand = this.ObjDatabase.GetStoredProcCommand(spName); this.ObjDatabase.AddInPa

我正在从事一个ASP.NET项目。我在SQL Server中有一个存储过程,它返回要在图表中显示的数据列表。此存储过程工作正常。我需要将返回数据作为
SqlDataReader
对象传递到
Chart.DataBindTable

我这样调用存储过程:

string spName = "spFetchDetails";
DbCommand dbCommand = this.ObjDatabase.GetStoredProcCommand(spName);
this.ObjDatabase.AddInParameter(dbCommand, "@Company", DbType.Int32, Company);
this.ObjDatabase.AddInParameter(dbCommand, "@Title", DbType.String, Title);
this.ObjDatabase.AddInParameter(dbCommand, "@DateRange", DbType.String, DateRange);

DataTable dt = new DataTable();
dt = this.ObjDatabase.ExecuteDataSet(dbCommand).Tables[0];
在这里,代码以
DataTable
的形式返回存储过程结果,我想调用
ExecuteReader()
方法,但我不确定如何执行

Chart.DataBindTable(dt, "Example");
这是呈现图表的代码

下面是我在另一张图表中的做法,它正在发挥作用

SqlCommand cmd = new SqlCommand(
  "Select ai.ItemDescription, ai.ItemRate, los.sellingprice, los.mrp from aitem ai inner join losShopItemShipmentDetail los on los.itemid = ai.itemid", con);
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();

Chart.DataBindTable(rdr, "ItemDescription");
如何以这种方式调用存储过程?或者有没有一种方法可以将DataTable传递到DataBindTable函数中

public void DataBindTable (System.Collections.IEnumerable dataSource, string xField);

您可以按如下方式调用存储过程

SqlCommand cmd = new SqlCommand("<SqlProcedureName>", con)
cmd.CommandType = CommandType.StoredProcedure;
SqlCommand cmd=newsqlcommand(“,con)
cmd.CommandType=CommandType.storedProcess;
而不是将datareader分配给图表控件。找到另一种只设置数据的方法

您可以尝试以下方法(示例代码演示如何使用它):


SqlDataReader
作为“数据”传递这不是一个好主意-最好有一个
数据表
列表
或只包含数据的东西-而不是一个打开的
SqlDataReader的全部开销
…然后如何将数据表传递到DataBindTableWell中-检查文档中您的
图表
组件-我几乎要崩溃了确信提供数据的方式必须与传入
SqlDataReader
不同(如果没有,请查找更好的图表组件…)此图表组件@CaiusJard是的,请注意,如果您使用的是.net core,那么如果不引用扩展名,AsEnumerable可能不可用,而且
Chart c = new Chart();
DataTable dt = new DataTable();
c.DataBindTable(dt.AsEnumerable());