当前位置:编程学习 > C#/ASP.NET >>

关于报表棘手的问题

我是新手,问一下高手。在rdlc文件里,我把网站数据源里的数据拖到里面去了,为什么运行时,数据部显示呢。还请各位帮忙解答一下啊!在此先谢谢各位了。 --------------------编程问答-------------------- 没代码怎么解决? --------------------编程问答-------------------- rdlc报表的实现方式:
1、定义DataSet
2、实现rdlc需要显示的字段与DataSet的中table的字段进行绑定
3、为DataSet赋值 --------------------编程问答--------------------
引用 2 楼 sh_zhuting 的回复:
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();



各位看看有什么问题吗 --------------------编程问答-------------------- 我有个例子,可以发你,如需要,请联系。 --------------------编程问答-------------------- 我是按公司以前的做法做的,我以前都没用过,你那个例子是用另一种方法做的吧?
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,