rdlc报表的实现方式:
1、定义DataSet
2、实现rdlc需要显示的字段与DataSet的中table的字段进行绑定
3、为DataSet赋值

解决方案 »

  1.   

    数据访问层:
     public static DataTable getYWLYBB(string rq)
            {
                
                StringBuilder sb = new StringBuilder();
                sb.Append(" Select nvl(RQ,0) rq,nvl(ZJ,0) zj,ywmc,P_YWMC From ");
                sb.Append(" (Select YWFL ,to_char(slsj,'dd') rq, Count(0)  As zj From khbx_jxd_dr");
                sb.Append(" Where YWFL Is Not Null And to_char(slsj,'dd') Is Not Null");
                sb.Append(" Group By YWFL,to_char(slsj,'dd') ) a,dbgl_ywfl b");
                sb.Append(" Where a.YWFL(+)=b.ywmc And P_YWMC Is Not Null  ");
                return DataBaseManage.ExecuteDataSet(sb.ToString()).Tables[0];
            }业务逻辑层:
     DataTable dt = khbx_jxd_drywlDao.getYWLYBB(rq);
                
                int Days = DateTime.DaysInMonth(Convert.ToInt32(rq.Substring(0, 4)), Convert.ToInt32(rq.Substring(4, 2)));
                List<string> list = dt.AsEnumerable().OrderBy(x => x["p_ywmc"]).Select(x => x["ywmc"].ToString()).Distinct().ToList();
                var d =
                    (from a in
                         (from i in Enumerable.Range(1, Days)
                          from j in list
                          select new
                          {
                              rq = i,
                              ywmc = j,
                              zj = 0
                          })
                     join b in dt.AsEnumerable() on new { rq = a.rq, ywmc = a.ywmc } equals new { rq = Convert.ToInt32(b["rq"]), ywmc = b["ywmc"].ToString() }
                     into temp
                     from b in temp.DefaultIfEmpty()
                     select new
                     {
                         a.rq,
                         a.ywmc,
                         zj = null == b ? 0 : Convert.ToInt32(b["zj"])
                     }
                    ).ToList();
                DataTable result = ConvertToDataTable(d);
                return result;
               // return khbx_jxd_drywlDao.getYWLYBB(rq);
            }        private static DataTable ConvertToDataTable<T>(IEnumerable<T> data)
            {
                var dt = new System.Data.DataTable();
                var ps =typeof(T).GetProperties().ToList();
                ps.ForEach(p => dt.Columns.Add(p.Name, p.PropertyType));            foreach(T t in data)
                {
                    var dr = dt.NewRow();
                    var vs = from p in ps select p.GetValue(t, null);
                    var ls = vs.ToList();
                    int i = 0;
                    ls.ForEach(c => dr[i++] = c);
                    dt.Rows.Add(dr);
                }
                return dt;
            } 报表页面:        if (!IsPostBack)
            {
                BindReport();
            }
           
        }
        /// <summary>
        /// 绑定报表
        /// </summary>
        private void BindReport()
        {
            ReportViewer1.Visible = true;
            DataTable dt = khbx_jxd_drBiz.getYWLYBB("201005");
            ReportDataSource rds = null;        if (dt != null && dt.Rows.Count > 0)
            {
                rds = new ReportDataSource("YWL_V_KHBX_JXD_DR", dt);        }
            else
            {
                rds = new ReportDataSource("", dt);
            }
            ReportViewer1.LocalReport.DataSources.Clear();
            ReportViewer1.LocalReport.DataSources.Add(rds);
            ReportViewer1.LocalReport.Refresh();各位看看有什么问题吗