关于报表棘手的问题
我是新手,问一下高手。在rdlc文件里,我把网站数据源里的数据拖到里面去了,为什么运行时,数据部显示呢。还请各位帮忙解答一下啊!在此先谢谢各位了。 --------------------编程问答-------------------- 没代码怎么解决? --------------------编程问答-------------------- 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#