Click here to Skip to main content
15,886,678 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
How do I return values from datarow to datatable: "Filtre.ImportRow" return null ?

C#
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using MilenSAP.Web.Extensions;
using MilenSAP.Web.Filters;
using MilenSAP.Web.Models;
using MilenSAP.Web.Reports;
using MilenSAP.Web.Reports.DataSetAvansTableAdapters;

namespace MilenSAP.Web.Controllers
{
    public class RaporAvansController : Controller
    {
        private readonly int kullaniciId =
            Convert.ToInt32(System.Web.HttpContext.Current.Session["LogedUserID"].ToString());

        private milensapEntities db = new milensapEntities();

        [SecurityActionFilter]
        //GET: RaporAvans
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult IndexExcel()
        {            

            ReportClass rptH = new ReportClass();
            rptH.FileName = Server.MapPath("/Reports/CrystalReportAvans.rpt");
            rptH.Load();

            rapor_avansTableAdapter raporAvansTableAdapter = new rapor_avansTableAdapter();
            DataSetAvans.rapor_avansDataTable dt = new DataSetAvans.rapor_avansDataTable();

            raporAvansTableAdapter.Fill(dt);

            var activePersonel = db.tbl_kullanici.Find(kullaniciId).tbl_personel.personel_id;
            var admin = db.tbl_kullanici.Find(kullaniciId).yetkilimi;
            DataRow[] dr = dt.Select("talep_eden=" + activePersonel);

            if (admin)
            {
                rptH.SetDataSource(dt.DefaultView);
                var stream = rptH.ExportToStream(ExportFormatType.Excel);
                return File(stream, "application/vnd.ms-excel");
            }
            else
            {
                DataTable filtre = new DataTable();
                foreach (var dataRow in dr)
                {
                    filtre.ImportRow(dataRow);
                }
                rptH.SetDataSource(filtre.DefaultView);
                var streamfiltre = rptH.ExportToStream(ExportFormatType.Excel);
                return File(streamfiltre, "application/vnd.ms-excel");
            }
        }

        public ActionResult IndexPdf()
        {
            ReportClass rptH = new ReportClass();
            rptH.FileName = Server.MapPath("/Reports/CrystalReportAvans.rpt");
            rptH.Load();

            rapor_avansTableAdapter raporAvansTableAdapter = new rapor_avansTableAdapter();
            DataSetAvans.rapor_avansDataTable dt = new DataSetAvans.rapor_avansDataTable();

            raporAvansTableAdapter.Fill(dt);

            var activePersonel = db.tbl_kullanici.Find(kullaniciId).tbl_personel.personel_id;
            var admin = db.tbl_kullanici.Find(kullaniciId).yetkilimi;            

            if (admin)
            {
                rptH.SetDataSource(dt.DefaultView);
                var stream = rptH.ExportToStream(ExportFormatType.PortableDocFormat);
                return File(stream, "application/pdf");
            }
            else
            {
                DataRow[] dr = dt.Select("talep_eden=" + activePersonel);
                DataTable filtre = new DataTable();
                foreach (var dataRow in dr)
                {
                    filtre.ImportRow(dataRow);           
                }
                rptH.SetDataSource(filtre.DefaultView);
                var streamfiltre = rptH.ExportToStream(ExportFormatType.PortableDocFormat);
                return File(streamfiltre, "application/pdf");
            }            
        }
    }
}
Posted
Updated 10-Sep-15 3:03am
v2

1 solution

C#
foreach (var dataRow in dr)
{
   filtre.ImportRow(dataRow);
}


Of what use is your foreach statement since you are just returning a row ? Are you trying to get the columns in the row because dr is already a datarow. You can use this to just add the retrieved row

C#
if (dr != null)
{
   filtre.ImportRow(dr);
}
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900