ERRO REPORT VIEWER

14/02/2014

0

Olá pessoal,estou tentando gerar um relatório usando reportviewer mas está dando o seguinte erro:

A DataSourceID da ReportDataSource 'dsRelatorio' do ReportViewer '' deve ser a identificação de um controle do tipo IDataSource. Não foi possível localizar um controle com identificação 'System.Collections.Generic.List`1['.

O código é esse aqui:

A classe que gera o relatório:

public partial class FrmRelatoriosReportViewer : System.Web.UI.Page
    {
        SqlConnection Con = null;

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {

                //Título da página
                if (!IsPostBack)
                {
                    Page.Title = "Relatório";                 

                    /***************************************************/
                    ClsRel lRel = new ClsRel();

                    List<object[]> lListaDataSource = new List<object[]>();
                    object[] lDsResolucoesHTML = { "dsRelatorio", lRel.GerarListaResolucoesHTML(Session["$SELECT$"].ToString()) };

                    lListaDataSource.Add(lDsResolucoesHTML);
                    rpvRelatorio.Visible = true;
                    this.rpvRelatorio.LocalReport.DataSources.Clear();
                    rpvRelatorio.LocalReport.ReportPath = Server.MapPath("~\\Relatórios\\" + Session["$Relatorio_rdlc$"].ToString());

                    foreach (object[] lItem in lListaDataSource)
                    {
                        ReportDataSource lDataSource = new ReportDataSource(lItem[0].ToString(), lItem[1].ToString());
                        rpvRelatorio.LocalReport.DataSources.Add(lDataSource);
                    }           
                    this.rpvRelatorio.LocalReport.Refresh();                  
                }
            }
            catch (Exception ex)
            {
                Con.Close();
                ScriptManager.RegisterStartupScript(this, this.GetType(), "alerta", "window.alert('Não foi possível gerar o relatório:\n" + ex.Message + "');", true);
            }
        }

    }



E o código da Classe lRel

public class ClsRel
    {
        SqlConnection Con = null;

        public List<ListaResolucoesHTML> GerarListaResolucoesHTML(string pSelect)
        {
            try
            {
                string gSql = string.Empty;

                SqlConnection con = new SqlConnection();
                con.ConnectionString = "Password=1q2w3e!Q@W#E;Persist Security Info=True;User ID=sa;Initial Catalog=protocolo;Data Source=cdcsql";
                con.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = con;
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = pSelect;// Session["$SELECT$"].ToString();
                DataTable dt = new DataTable();
                dt.Load(cmd.ExecuteReader());
                con.Close();

                List<ListaResolucoesHTML> lLista = new List<ListaResolucoesHTML>();

                foreach (DataRow lDr in dt.Rows)
                {
                    ListaResolucoesHTML lAtributos = new ListaResolucoesHTML();
                    lAtributos.Numero_Resolucao = lDr["Numero_Resolucao"].ToString();
                    lAtributos.Data_resolucao = (DateTime)lDr["Data_resolucao"];
                    lAtributos.Sequencial_processo = lDr["Sequencial_processo"].ToString();
                    lAtributos.Volume_processo = Convert.ToInt32(lDr["Volume_processo"]);
                    lAtributos.Assunto = lDr["Assunto"].ToString();
                    lAtributos.Numero_Ord_Resolução = (int)lDr["Numero_Ord_Resolução"];
                    lAtributos.Descricao = lDr["Descricao"].ToString();
                    lAtributos.Seq_Documento_Sem_Volume = (int)lDr["Seq_Documento_Sem_Volume"];
                    lAtributos.Seq_Fonte_Recursos = lDr["Seq_Fonte_Recursos"].ToString();
                    lAtributos.seq_parte = Convert.ToInt32(lDr["seq_parte"]);
                    lAtributos.Desc_Interessado = lDr["Desc_Interessado"].ToString();

                    lAtributos.Valor = (decimal)lDr["Valor"];


                    lLista.Add(lAtributos);
                }

                //Session["ListaDataSource"] = lLista;
                return lLista;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }

    [Serializable]
    public class ListaResolucoesHTML
    {
        public String Numero_Resolucao { get; set; }
        public DateTime Data_resolucao { get; set; }
        public String Sequencial_processo { get; set; }
        public int Volume_processo { get; set; }
        public String Fonte_Recursos { get; set; }
        public String Assunto { get; set; }
        public int Numero_Ord_Resolução { get; set; }
        public String Descricao { get; set; }
        public int Seq_Documento_Sem_Volume { get; set; }
        public String Seq_Fonte_Recursos { get; set; }
        public int seq_parte { get; set; }
        public String Desc_Interessado { get; set; }
        public Decimal Valor { get; set; }
        public bool Validado { get; set; }
    }



Se alguém puder ajudar ficarei muito grato.
Thiago Albuquerque.

Thiago Albuquerque.

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar