看看代码吧。现在我用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. Activity回传值报错:Failure delivering result ResultInfo{who=null,request=7,result = 0,data=null}

    Activity  A   -----值------->  Activity  B   -----值----->  Activity  A     场景:当A跳转到B,再从B直接点击返回按 ...

  2. MySQL学习(十二)

    视图 view 在查询中,我们经常把查询结果当成临时表来看, view是什么?view可以看成一张虚拟表,是表通过某种运算得到的一个投影. 表的变化会影响到视图 既然视图只是表的某种查询的投影,所以主 ...

  3. Qt--信号槽传递自定义结构体参数

    自定义结构体参数的信号槽连接 (1) 对于自定义的结构体参数,信号槽无法识别参数,导致信号槽连接不起作用.所以需要注册结构体参数.在结构体中声明结束的地方加上结构体注册. struct DealDet ...

  4. ZOJ 4053 Couleur

    4053 思路: 主席树 先分别求前缀和后缀的逆序数 然后要求某一段的逆序数,就可以根据前缀或着后缀根据容斥求出答案, 这样需要枚举这一段中的数,求之前或者之后有多少个比他大或比他小的数, 这个可以通 ...

  5. NGUI中处理层级问题的几个方法总结

    1.获得ui界面的UIPanel的最大层级: static int GetUIMaxDepth(Transform root) { UIPanel[] panels = root.GetCompone ...

  6. 免费的剪贴板工具Ditto安装与使用

    下载地址:https://sourceforge.net/projects/ditto-cp 直接安装,选择好安装的位置,一直选择默认的选项就行

  7. Shell脚本管理

    sh test.sh../test.sh与source test.sh.. test.sh执行命令的区别:sh是启用子shell执行而source或点是在当前窗口执行export A=123:定义全局 ...

  8. LeetCode--231--2的幂函

    问题描述: 给定一个整数,编写一个函数来判断它是否是 2 的幂次方. 示例 1: 输入: 1 输出: true 解释: 2 0  = 1 示例 2: 输入: 16 输出: true 解释: 2 4   ...

  9. p1472 Cow Pedigrees

    用dp[i][j]记录i个点,组成深度恰好为j的方案数.arr[i][j]记录i个点,深度<=j的方案数.那么dp[i][j]只有i为奇数时不为0.而arr[i][j]等于dp[i][j]的前缀 ...

  10. CSS之transform-origin属性

    设置旋转元素的基点位置 语法 transform-orign:0 100% 0 transform-origin: x-axis y-axis z-axis; x-axis 定义视图被置于 X 轴的何 ...