【问题标题】:DataBindTable Incompatible with SqlDataReader does not implement IEnumerableDataBindTable 不兼容 SqlDataReader 不实现 IEnumerable
【发布时间】:2017-04-12 12:38:15
【问题描述】:

我在显示来自 SQL Server 中的列的数据时遇到问题,在我的 asp.net 图表中插入 x 和 y 问题是这样的,所以似乎方法 (DataBindTable) 正在等待 IEnumerable 但是我的 SqlDataReader 没有实现 IEnumerable。如果你能举例说明如何克服这个困难,谢谢。

这是插入代码:

protected void Chart1_Load13(object sender, EventArgs e)
{
      string cs = ConfigurationManager.ConnectionStrings["CS"].ConnectionString;
    using (SqlConnection con = new SqlConnection(cs))
    {
        SqlCommand cmd = new SqlCommand("SELECT [Consumo_Medio_Real], [Tipo_de_Fatura]  FROM [dbo].[t_faturas]", con);
        con.Open();

        SqlDataReader rdr = cmd.ExecuteReader();
        Chart1.DataBindTable(rdr,"Consumo_Medio_Real");
    }
}

这是连接代码:

  <connectionStrings>
  <add name="CS" connectionString="Data Source=ASUS;Initial 
  Catalog=DB_SACC;Persist Security Info=True;User ID=sa;Password=1234"
  providerName="System.Data.SqlClient" />
  </connectionStrings>

【问题讨论】:

  • 使用数据表Load方法用datareader填充,然后绑定数据表
  • 使用 sqldataadapter 自动填充可以绑定的数据表:msdn.microsoft.com/en-us/library/…
  • 我该怎么做@Steve?
  • 您也可以在任何DataTable 上调用AsEnumerable() 将其转换为IEnumerable&lt;DataRow&gt;。除此之外,这实际上可能是以下内容的副本(或至少由以下内容回答):stackoverflow.com/questions/6939054/…
  • 你能给我一些实际的例子吗?

标签: c# asp.net sql-server


【解决方案1】:

你可以load你的数据阅读器进入数据表:

DataTable dt = new DataTable();
SqlDataReader rdr = cmd.ExecuteReader();
dt.Load(rdr);
dataReader.Close();
Chart1.DataBindTable(dt,"Consumo_Medio_Real");

【讨论】:

  • 我在使用数据表时遇到问题,它给出了这个错误:错误 4 'DataTable' is a ambiguous reference between 'Microsoft.Office.Interop.Excel.DataTable' and 'System.Data.DataTable'跨度>
  • 当使用类型“DataTable”时使用“System.Data.DataTable”
  • 您是否在两个地方都使用了完整的参考资料?即System.Data.DataTable dt = new System.Data.DataTable();?
【解决方案2】:

试试这个:

string cs = ConfigurationManager.ConnectionStrings["CS"].ConnectionString;
 using (SqlConnection con = new SqlConnection(cs))
 {
        SqlCommand cmd = new SqlCommand("SELECT [Consumo_Medio_Real], [Tipo_de_Fatura]  FROM [dbo].[t_faturas]", con);
        con.Open();
        SqlDataReader rdr = cmd.ExecuteReader();
        //Add datatable...
        System.Data.DataTable dt  = new DataTable();
        dt.Load(rdr);
        var enumerableTable = (dt as System.ComponentModel.IListSource).GetList();
        chart1.DataBindTable(enumerableTable , "X");

here你有答案了……

希望对您有所帮助。

【讨论】:

  • 我在使用数据表时遇到问题,它给出了这个错误:错误 4 'DataTable' is a ambiguous reference between 'Microsoft.Office.Interop.Excel.DataTable' and 'System.Data.DataTable'跨度>
  • 当使用类型“DataTable”时使用“System.Data.DataTable”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-18
  • 1970-01-01
相关资源
最近更新 更多