【发布时间】:2019-05-29 03:50:18
【问题描述】:
我正在开发一个 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);
【问题讨论】:
-
将
SqlDataReader作为“数据”传递并不是一个好主意 - 最好使用DataTable或List<T>或仅包含的内容数据 - 不是打开的SqlDataReader的全部开销 ..... -
那么如何将datatable传入DataBindTable
-
好吧 - 检查 文档 以了解您的
Chart组件 - 我几乎确信 必须 以不同的方式来提供数据而不是通过SqlDataReader传递(如果没有:找到更好的图表组件......) -
@CaiusJard 是的
标签: c# asp.net sql-server