看看代码吧。现在我用Linq已经上瘾,对SQL语言已经几乎不用了,可惜的是rdlc不支持linq,要采用sql语言生成datatable,用datatable绑定rdlc,这里,应用了一个技巧,解决了这个问题。

还是那句话:看代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.Data;
using System.Data.SqlClient;
using Microsoft.Reporting.WebForms;

using System.Configuration;//调用配置

namespace aspnet_nczx_xsxk
{
public partial class yj_cs_bb : System.Web.UI.Page
{
private nczx_xsxkEntities sjklj = new nczx_xsxkEntities();//数据库连接

private webncxk_class gj = new webncxk_class();//调用类中有关的函数
protected void Page_Load(object sender, EventArgs e)
{
try
{
//防止恶意登录

admin_user dq_gly = Session["stjBEF985E"] as admin_user;

if (dq_gly == null)
{
this.Response.Redirect("~/Login.aspx");
return;
}

}

catch
{
this.Response.Redirect("~/Login.aspx");
// this.btn_xx_cx.Text = err.Message;
}

if(!IsPostBack)
{
// //用linq生成的数据填充自己定义的dataset

// this.Response.Redirect("~/yj_cs_bb.aspx?cs=" + cs);
/*
string connstring = ConfigurationManager.ConnectionStrings["qsxkConnectionString"].ConnectionString;
// string connstring = "Data Source=.\\SQL2008R2;Initial Catalog=qsxk;Integrated Security=True";
SqlConnection conn = new SqlConnection(connstring);
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "SELECT * FROM Xs_xk";
conn.Open();
cmd.ExecuteNonQuery();
DataTable dt = new DataTable();
try
{
SqlDataAdapter ada1 = new SqlDataAdapter(cmd);
ada1.Fill(dt);

}
finally
{
conn.Close();
cmd.Dispose();
conn.Dispose();
}
*/
try
{
DataTable dt = new DataTable();//建立数据表结构
dt.Columns.Add("Kcmc", typeof(string));
dt.Columns.Add("Jsxm", typeof(string));
dt.Columns.Add("Sknd", typeof(string));
dt.Columns.Add("Xq", typeof(string));
dt.Columns.Add("Xm", typeof(string));
dt.Columns.Add("Xz", typeof(string));
dt.Columns.Add("Bj", typeof(string));
dt.Columns.Add("sjdd", typeof(string));
//分离查询条件
// string cs = sknd + "|" + xq + "|" + nj+"|"+dq_gly.dwid.ToString();//还要加:学校id,和“管理员”或教师姓名,如果是教师姓名,就转向教师查看选修课程的数据页面

string[] cxtj = this.Request.QueryString["cs"].ToString().Split('|');
string sknd = cxtj[0];
string xq = cxtj[1];
string nj = cxtj[2];
int dwid = int.Parse(cxtj[3].Trim());
var cx_db_xk = from aa in sjklj.Xs_xk
where aa.Sknd == sknd && aa.Xq == xq && aa.Xz == nj && aa.dwid == dwid
select aa;
foreach(var kk in cx_db_xk)
{
DataRow dr = dt.NewRow();
dr["Kcmc"] = kk.Kcmc;
dr["Jsxm"] = kk.Jsxm;
dr["Sknd"] = kk.Sknd;
dr["Xq"] = kk.Xq;
dr["Xm"] = kk.Xm;
dr["Xz"] = kk.Xz;
dr["Bj"] = kk.Bj;
dr["sjdd"] = kk.sjdd;
dt.Rows.Add(dr);
}

ReportDataSource rds = new ReportDataSource("DataSet1", dt);
this.ReportViewer1.LocalReport.DataSources.Clear();
this.ReportViewer1.LocalReport.DataSources.Add(rds);
//为报表浏览器指定报表文件
this.ReportViewer1.LocalReport.ReportEmbeddedResource = "aspnet_nczx_xsxk.Report1.rdlc"; //指定数据集,数据集名称后为表,不是DataSet类型的数据集
}
catch
{

}
}
}
}
}

用linq和datatable巧妙应用于微软报表rdlc的更多相关文章

  1. 每日学习心得:Linq解决DataTable按照某一列的值排序问题/DataTable 导出CSV文件/巧用text-overflow解决数据绑定列数据展示过长问题

    2013-8-5 1 Linq解决DataTable按照某一列的值排序 在之前的总结中提到过对拼接而成的复合的DataTable按照某一列值的大小排序,那个主要的思想是在新建表结构时将要排序的那一列的 ...

  2. linq to datatable 和lambda查询datatable

    用Linq查询DataTable static DataTable table = new DataTable(); static DataColumn dc = new DataColumn(); ...

  3. (转)C#用Linq实现DataTable的Group by数据统计

    本文转载自:http://www.cnblogs.com/sydeveloper/archive/2013/03/29/2988669.html 1.用两层循环计算,前提条件是数据已经按分组的列排好序 ...

  4. Linq查询datatable的记录集合

    通过linq查询datatable数据集合满足条件的数据集 1.首先定义查询字段的变量,比方深度 string strDepth=查询深度的值: var dataRows = from datarow ...

  5. LINQ返回DataTable类型 list转dataset 转换为JSON对象

    using System.Web.Script.Serialization; using System.Collections.Generic; using System.Reflection; us ...

  6. LinQ实现DataTable不定行转列 行列转换,有图

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="LinqDemo2.aspx.c ...

  7. 如何使用linq操作datatable进行分组

    使用微软.net的孩子们应该都知道linq吧,要知道linq可是其他高级语言没有的技术,比如php,java等等,但是起初我对linq的认识只是停留在对 list<> 的泛型集合进行操作, ...

  8. 使用linq 对 DataTable 中的数据进行 查询 与 分类求合

    A:linq 的查询方式写得可以非常简洁如下所示: DataTable dt = null;        private void XtraForm1_Load(object sender, Eve ...

  9. 【转】Linq实现DataTable行列转换

    出处:http://www.cnblogs.com/li-peng/ 转换前的table: 转换后的table: 代码里有详细的说明, 还有一些参数我都截图了下面有 using System;usin ...

随机推荐

  1. Windows下的Python 3.6.1的下载与安装(适合32bits和64bits)(图文详解)

    不多说,直接上干货! 为什么,这么简单的一个python,我还要特意来写一篇博客呢? 是因为留念下,在使用了Anaconda2和Anaconda3的基础上,现在需安装python3.6.0来做数据分析 ...

  2. Spring AOP 理论

    一.AOP AOP 产生的背景 “存在即合理”,任何一种理论或技术的产生,必然有它的原因.了解它产生的背景.为了解决的问题有助于我们更好地把握AOP的概念. 软件开发一直在寻求一种高效开发.护展.维护 ...

  3. lncRNA表达定量方法评估

    见文章:Benchmark of lncRNA Quantification for RNA-Seq of Cancer Samples Overall, 10-16% of lncRNAs can ...

  4. 使用AutoCloseable 实现自动关闭资源

    一.认识AutoCloseable AutoCloseable接口位于java.lang包下,从JDK1.7开始引入. 1.在1.7之前,我们通过try{} finally{} 在finally中释放 ...

  5. 关于Android如何创建空文件夹,以及mkdir和mkdirs的区别

    File().mkdir 和File().mkdirs的区别 mkdir是只能建立一级目录 比如 /sdcard/test/pp 就只能建立test 而mkdirs 则可以全部建立

  6. bzoj4516: [Sdoi2016]生成魔咒 sam

    题意:每次插入一个数字,查询本质不同的子串有多少个 题解:sam,数字很大,ch数组用map来存,每次ins之后查询一下新建点表示多少个本质不同的子串(l[np]-l[fa[np]]) /****** ...

  7. stl中常用的排序算法

    #include"iostream" #include"vector" using namespace std; #include"string&qu ...

  8. strom:实时的WordCount

    集采单词 package wordcount; import java.io.File; import java.io.IOException; import java.util.Collection ...

  9. Oracle 11.2.0.4下载地址

    Linux x86: https://updates.oracle.com/Orion/Services/download/p13390677_112040_LINUX_1of7.zip?aru=16 ...

  10. springboot自动装配

    Spring Boot自动配置原理 springboot自动装配 springboot配置文件 Spring Boot的出现,得益于“习惯优于配置”的理念,没有繁琐的配置.难以集成的内容(大多数流行第 ...