C#:从datarow返回值 [英] C#: Return values from datarow

查看:175
本文介绍了C#:从datarow返回值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何将datarow中的值返回到datatable:Filtre.ImportRow返回null?



How do I return values from datarow to datatable: "Filtre.ImportRow" return null ?

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");
            }            
        }
    }
}

推荐答案

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





你的foreach声明有什么用处,因为你刚刚返回一行?您是否尝试获取行中的列,因为 dr 已经是数据行。您可以使用它来添加检索到的行





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

if (dr != null)
{
   filtre.ImportRow(dr);
}


这篇关于C#:从datarow返回值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆