2013-04-12 85 views
1

我使用reportviewer与strongly dataset但现在
我需要通过代码隐藏填充我的reportviewer。但我发现了这个错误:
A data source instance has not been supplied for the data source 'ds_blabla'.
这里是我的代码喂养数据集:通过代码隐藏填充reportviewer

public DataSet PreencheDS(Relatorios rel) 
    { 
    DataSet retorno = new DataSet(); 
    try 
     { 
     string sql = @"SELECT proj.descricao AS projeto, func.descricao AS funcionalidade, clb.clube AS cliente, ch.descricao 
     FROM MyTable ch 
     INNER JOIN table1 proj ON MyTable.projeto = table1.id 
     INNER JOIN table2 func ON MyTable.funcionalidade = table2.id 
     INNER JOIN table3 clb ON MyTable.clube = table3 .id 
     WHERE (MyTable.responsavel = @responsavel) AND (MyTable.clube = @clube) AND (MyTable.dt_cadastro >= @dt_inicial) AND (MyTable.dt_cadastro <= @dt_final)";     
       MySqlCommand cmd = new MySqlCommand(); 
       cmd.CommandText = sql; 
       cmd.CommandType = CommandType.Text; 
       cmd.Parameters.Add(new MySqlParameter("@responsavel", MySqlDbType.VarChar)).Value = rel.Responsavel_ID; 
       cmd.Parameters.Add(new MySqlParameter("@clube", MySqlDbType.VarChar)).Value = rel.Clube_ID; 
       cmd.Parameters.Add(new MySqlParameter("@dt_inicial", MySqlDbType.DateTime)).Value = rel.Dt_Inicial; 
       cmd.Parameters.Add(new MySqlParameter("@dt_final", MySqlDbType.DateTime)).Value = rel.Dt_Final; 
       retorno = _dal.Consultar(cmd); 
      } 
      catch (Exception ex) 
      { 
       throw new Exception(ex.Message); 
      } 
      return retorno; 
     } 

,这里是包含页面我ReportViewer

protected void Page_Load(object sender, EventArgs e) 
    {   
     if (!IsPostBack) 
      { 
       rel.Responsavel_ID = Convert.ToInt32(Session["usrValue"].ToString()); 
       rel.Clube_ID = Convert.ToInt32(Session["clube_id"].ToString()); 
       rel.Dt_Inicial = Session["dt_inicial"].ToString() + " 00:00:00"; 
       rel.Dt_Final = Session["dt_final"].ToString() + " 23:59:59"; 

       DataSet ds = _rel.PreencheDS(rel); 
       ReportDataSource source = new ReportDataSource("MyTable", ds.Tables[0]);    
       this.ReportViewer1.ProcessingMode = ProcessingMode.Local; 
       this.ReportViewer1.LocalReport.DataSources.Clear(); 
       this.ReportViewer1.LocalReport.DataSources.Add(source); 
       this.ReportViewer1.LocalReport.Refresh(); 
      } 
     } 

我想codebehind做而不是使用strongly dataset,因为我需要将parameters传递给我的reportviewer。但这些parameters他们可能会有所不同...所以我想通过codebehind

UPDATE
我不喜欢this。现在有没有消息了,但似乎没有什么...

回答

1

在以下行,而不是MyTable,应改为ds_blabla

ReportDataSource source = new ReportDataSource("MyTable", ds.Tables[0]);    
+0

谢谢。现在错误消息不再出现\ o/yeey。但是什么也没有出现。我在我的sql管理器上测试了我的查询,它返回了空集...你能告诉我我的查询有什么问题吗? – Ghaleon

+0

不,因为我无法访问您的数据库。您必须自己解决这个问题;-) –

+0

好了,现在错误消失了,但是没有显示...数据集不是空的,也许还有其他错误? – Ghaleon