C# 以SqlDataReader的形式返回数据
我正在从事一个ASP.NET项目。我在SQL Server中有一个存储过程,它返回要在图表中显示的数据列表。此存储过程工作正常。我需要将返回数据作为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
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());