locked
Step by Step Reports for MVC - ASP.Net 2017 RRS feed

  • Question

  • User-164452226 posted

    Good day Tech Gurus,

    I want to implement reports in my system but l am using stored procedures. Here is what l have:

    1) Stored procedures:

    1) Save subject
    CREATE proc [dbo].[SaveSubject] (
    @SubjectID int,
    @SubjectCode nvarchar(50),
    @Subject nvarchar(50),
    @Userid bigint
    )
    as
    if (@SubjectID<=0)
    insert into TpSchoolSubjects
    (
    	SubjectCode,
    	Subject,
    	Userid
    )
    values
    (
    	@SubjectCode,
    	@Subject,
    	@Userid
    )
    else 
    update TpSchoolSubjects set
    	SubjectCode=@SubjectCode,
    	Subject=@Subject,
    	Userid=@Userid
    where SubjectID=@SubjectID
    
    2) Select all subject
    CREATE proc [dbo].[GetAllSubject] 
    as
    select * from TpSchoolSubjects 

    2)Entity Framework Class:

        public class EFSubjectRepository 
        {
            private CommonRepository<Subject> SubjectRepository;
    
            public EFSubjectRepository()
            {
                this.SubjectRepository = new CommonRepository<Subject>(new Subject());
            }
    
            public IEnumerable<Subject> GetAll(object[] parameters)
            {
                string spQuery = "[GetAllSubject]";
                return SubjectRepository.ExecuteQuery(spQuery, parameters);
            }
    
            public Subject GetbyID(object[] parameters)
            {
                string spQuery = "[GetSubjectbyID] {0}";
                return SubjectRepository.ExecuteQuerySingle(spQuery, parameters);
            }
    
            public int Insert(object[] parameters)
            {
                string spQuery = "[SaveSubject] {0}, {1}, {2}";
                return SubjectRepository.ExecuteCommand(spQuery, parameters);
            }
    
            public int Delete(object[] parameters)
            {
                string spQuery = "[DeleteSubject] {0}";
                return SubjectRepository.ExecuteCommand(spQuery, parameters);
            }
        }

    3)Controller Methods - Subject Controller

           //TpSchoolSubject
            public ActionResult TpSchoolSubjectIndex()
            {
                int Count = 10;
                object[] parameters = { Count };
                var test = objTpSchoolSubject.GetAll(parameters);
                return View(test);
            }
    
            public ActionResult InsertTpSchoolSubject()
            {
                return View();
            }
    
            [HttpPost]
            public ActionResult InsertTpSchoolSubject(TpSchoolSubject model)
            {
                if (ModelState.IsValid)
                {
                    object[] parameters = { model.SubjectID, model.SubjectCode, model.Subject, model.Userid };
                    objTpSchoolSubject.Insert(parameters);
                }
                return RedirectToAction("TpSchoolSubjectIndex");
            }
            public ActionResult DeleteTpSchoolSubject(Int64 SubjectID)
            {
                object[] parameters = { SubjectID };
                this.objTpSchoolSubject.Delete(parameters);
                return RedirectToAction("TpSchoolSubjectIndex");
            }
    
            public ActionResult UpdateTpSchoolSubject(int SubjectID)
            {
                object[] parameters = { SubjectID };
                return View(this.objTpSchoolSubject.GetbyID(parameters));
            }

    4) Report API Controller

    using Syncfusion.EJ.ReportViewer;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Net.Http;
    using System.Web.Http;
    
    namespace CollegeSys.WebUI.Reports
    {
        public class ReportApiController : ApiController, IReportController
        {
            // GET api/<controller>
            public IEnumerable<string> Get()
            {
                return new string[] { "value1", "value2" };
            }
    
            // GET api/<controller>/5
            public string Get(int id)
            {
                return "value";
            }
    
            // POST api/<controller>
            public void Post([FromBody]string value)
            {
            }
    
            // PUT api/<controller>/5
            public void Put(int id, [FromBody]string value)
            {
            }
    
            // DELETE api/<controller>/5
            public void Delete(int id)
            {
            }
    
            //Post action for processing the rdl/rdlc report
            public object PostReportAction(Dictionary<string, object> jsonResult)
            {
                return ReportHelper.ProcessReport(jsonResult, this);
            }
            //Get action for getting resources from the report
            [System.Web.Http.ActionName("GetResource")]
            [AcceptVerbs("GET")]
            public object GetResource(string key, string resourcetype, bool isPrint)
            {
                return ReportHelper.GetResource(key, resourcetype, isPrint);
            }
            //Method will be called when initialize the report options before start processing the report
            public void OnInitReportOptions(ReportViewerOptions reportOption)
            {
                //Add SSRS Server and database credentials here
                reportOption.ReportModel.ReportServerCredential = new System.Net.NetworkCredential("", "");
                //reportOption.ReportModel.DataSourceCredentials.Add(new DataSourceCredentials("college", "", ""));
            }
            //Method will be called when reported is loaded
            public void OnReportLoaded(ReportViewerOptions reportOption)
            {
                //You can update report options here
            }
        }
    }
    
    

    l have installed Syncfusion and ReportviewerForMVC version 11. l have the following error:

    Error Creating Control - ReportViewer1Failed to create designer 'Microsoft.Reporting.WebForms.ReportViewer, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'

    Can someone please assist me, l have no clue on how l can write a report, just listing all subjects. If Crystal reports can work, which version and how can it run on a browser?

    Friday, January 18, 2019 11:58 AM

Answers

  • User-164452226 posted

    Ok, never mind guys. l downloaded a youtube video that explained much better-https://www.youtube.com/watch?v=UXuJx81q1Jc

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Saturday, January 19, 2019 11:52 AM