C#:从datarow返回值 [英] C#: Return values from datarow
本文介绍了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屋!
查看全文