我正在研究一个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);
答案 0 :(得分:1)
您可以尝试以下操作(示例代码以可视化方式使用):
Chart c = new Chart();
DataTable dt = new DataTable();
c.DataBindTable(dt.AsEnumerable());
答案 1 :(得分:0)
您可以按以下方式调用存储过程。
SqlCommand cmd = new SqlCommand("<SqlProcedureName>", con)
cmd.CommandType = CommandType.StoredProcedure;
但是代替将datareader分配给图表控件。寻找另一种仅设置数据的方法