找回密码
 立即注册

QQ登录

只需一步,快速开始

jszxzym

论坛元老

8

主题

33

帖子

7056

积分

论坛元老

积分
7056

活字格认证

jszxzym
论坛元老   /  发表于:2013-7-30 08:55  /   查看:9866  /  回复:14
环境:web下,页面报表绑定动态数据源。
问题:报表中的多系列柱状图没有柱,系列名和轴刻度能成功显示。
补充:数据获取没有问题。同样的数据源,同一页面上的表格可以成功显示。

14 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-7-30 09:23:00
沙发
jszxzym 你好

你所描述的功能和这个报表比较类型,你可以参考这个报表中的实现方法

源码下载:
http://www.gcpowertools.com.cn/products/activereports_demo.htm

在线演示地址:
http://www.gcpowertools.com.cn/livesamples/ar7/activereportsdemo/Viewers/Default.aspx?category=1001&action=3
回复 使用道具 举报
jszxzym
论坛元老   /  发表于:2013-7-30 16:16:00
板凳
获取的数据形式为:

DepartName       Year    Invest
部门A                   2005     100
部门A                   2007     4000
部门A                   2011     20
部门B                   2008     100
部门C                   2005      400
部门C                   2006      200
部门C                   2007      2000
部门C                   2008      1000
部门C                   2009      300
回复 使用道具 举报
jszxzym
论坛元老   /  发表于:2013-7-30 16:19:00
地板


这是显示的效果

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
jszxzym
论坛元老   /  发表于:2013-7-30 16:25:00
5#
绑定数据的代码 如下 :

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

public partial class AdvanceSearch_BylawSearch : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {      
        this.WebViewer1.ViewerType = GrapeCity.ActiveReports.Web.ViewerType.FlashViewer;

        Report.Empty EmptyRpt = new Report.Empty();

        this.WebViewer1.Report = EmptyRpt;
    }

    private System.Data.DataSet SearchFileInfo(List<string> StrDepartIdList, string StrStartTime, string StrEndTime, string StrProjTypeId)
    {
        //调用联合查询过程
        //string TablesName = "T_ProjectInvestPlan"
        //        + " left join T_ProjectInfo on T_ProjectInvestPlan.ProjectId = T_ProjectInfo.ProjectId"; ;
        string TablesName = " T_ProjectInvestPlan "
        + " left join ( T_ProjectInfo left join T_DepartInfo on T_ProjectInfo.DepartId = T_DepartInfo.DepartId ) "
        + " on T_ProjectInvestPlan.ProjectId =  T_ProjectInfo.ProjectId ";

        string Fileds = " T_DepartInfo.DepartId, T_ProjectInvestPlan.Year,T_ProjectInvestPlan.YearCountryInvest,T_ProjectInvestPlan.YearSelfInvest,T_DepartInfo.DepartName ";

        string StrSort = " T_ProjectInfo.DepartId ";

        string FiliterString = string.Empty;

        string StrSQL = "select " + Fileds + " from " + TablesName;

        for (int index = 0; index < StrDepartIdList.Count; index++)
        {
            if (index == 0)
            {
                FiliterString += string.IsNullOrEmpty(StrDepartIdList[index]) == true ? "" : " T_ProjectInfo.DepartId='" + StrDepartIdList[index] + "'";
            }
            else
            {
                FiliterString += string.IsNullOrEmpty(StrDepartIdList[index]) == true ? "" : " or T_ProjectInfo.DepartId='" + StrDepartIdList[index] + "'";
            }

        }

        if (string.IsNullOrEmpty(StrProjTypeId) == false &amp;&amp; StrProjTypeId != "-1" &amp;&amp; StrProjTypeId != "2")
        {
            FiliterString = FiliterString + (FiliterString.Equals(string.Empty) ? string.Empty : " and ")
                + "T_ProjectInfo.ProjectTypeId='" + StrProjTypeId + "' ";
        }


        if (string.IsNullOrEmpty(StrStartTime) == false
            &amp;&amp; string.IsNullOrEmpty(StrEndTime) == false)
        {
            FiliterString = FiliterString + (FiliterString.Equals(string.Empty) ? string.Empty : " and ")
                + "T_ProjectInvestPlan.Year >= '" + StrStartTime + "' and T_ProjectInvestPlan.Year <= '"
                + StrEndTime + "'";
        }

        //if (!FiliterString.Equals(string.Empty)) { StrSQL += " where "; }

        StrSQL += FiliterString.Equals(string.Empty) ? string.Empty : " where " + FiliterString;

        //StrSQL += FiliterString;

        StrSQL += " order by " + StrSort;

        //按projectId,departId查找FileInfo表,得到所查询项目的全部文件
        System.Data.DataSet ResultDataSet = null;
        ResultDataSet = new PMWeb.DBUtility.DatabaseHelper().ExecuteDataSet(StrSQL);



        return ResultDataSet;
    }
    ///<summary>
    /// 得到CheckBoxList中选中了的值
    /// </summary>
    /// <param name="checkList">CheckBoxList</param>
    /// <param name="separator">分割符号</param>
    /// <returns>01,02,03</returns>
    private List<string> GetCheckedValue(CheckBoxList checkList)
    {
        List<string> StrList = new List<string>();
        for (int i = 0; i < checkList.Items.Count; i++)
        {
            if (checkList.Items.Selected)
            {
                StrList.Add(checkList.Items.Value);
            }
        }

        return StrList;
    }


    protected void startFileStatistics_Click(object sender, EventArgs e)
    {
        this.WebViewer1.ViewerType = GrapeCity.ActiveReports.Web.ViewerType.FlashViewer;

        GrapeCity.ActiveReports.PageReport report1 = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath("../Report/DepartInvestReport.rdlx")));
        report1.Document.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(Document_LocateDataSource);
        WebViewer1.PdfExportOptions.FitWindow = false;
        WebViewer1.PdfExportOptions.DisplayMode = GrapeCity.ActiveReports.Export.Pdf.Section.DisplayMode.Outlines;

        WebViewer1.Report = report1;




    }

    void Document_LocateDataSource(object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
    {
        if (args.DataSourceName == "DataSource1")
        {
            if (args.DataSetName == "DataSet1")
            {
                args.Data = GetData();
            }
        }
    }

    private System.Data.DataTable GetData()
    {   
        //锁定项目
        List<string> StrDepartIdList = GetCheckedValue(this.selDepartName);

        string StrProjStartTime = this.StartTime.Value;

        string StrProjEndTime = this.EndTime.Value;

        string StrProjTypeId = this.ProjectTypeId.Items[this.ProjectTypeId.SelectedIndex].Value;

        if (StrDepartIdList.LongCount() == 0)
        {
            ClientScript.RegisterStartupScript(this.GetType(), " ", "<scriptlanguage='javascript' >alert('请选择建设单位!');</script>");
        }

        if (StrProjStartTime.Equals(string.Empty) || StrProjEndTime.Equals(string.Empty))
        {
            ClientScript.RegisterStartupScript(this.GetType(), " ", "<scriptlanguage='javascript' >alert('请填写起止年度!');</script>");
        }

        System.Data.DataSet ds = SearchFileInfo(StrDepartIdList, StrProjStartTime, StrProjEndTime, StrProjTypeId);
        System.Data.DataTable dt = ds.Tables[0];

        System.Data.DataTable ResultDt = new System.Data.DataTable();
        ResultDt.Columns.Add("DepartName");
        ResultDt.Columns.Add("Year");
        ResultDt.Columns.Add("YearDepartCountryInvest");
        ResultDt.Columns.Add("YearDepartSelfInvest");
        ResultDt.Columns.Add("YearDepartTotalInvest");

        //ResultDt.Rows.Add("国家海洋技术中心",2013,1000.0000,20.0000);
        foreach (string d in StrDepartIdList)
        {
            string StrDepartName = string.Empty;
            for (int y = int.Parse(StrProjStartTime); y <= int.Parse(StrProjEndTime); y++)
            {
                double YearDepartCountryInvest = 0;
                double YearDepartSelfInvest = 0;
                double YearDepartTotalInvest = 0;
               
                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    if(int.Parse(dr[1].ToString()) == y &amp;&amp; dr[0].ToString() == d)
                    {
                        YearDepartCountryInvest += double.Parse(dr[2].ToString());
                        YearDepartSelfInvest += double.Parse(dr[3].ToString());
                        YearDepartTotalInvest += YearDepartCountryInvest + YearDepartTotalInvest;
                        StrDepartName = dr[4].ToString();
                    }
                }

                if (YearDepartTotalInvest != 0)
                { ResultDt.Rows.Add(StrDepartName, y, YearDepartCountryInvest, YearDepartSelfInvest, YearDepartTotalInvest); }

            }
        }




        return ResultDt;
    }

}
回复 使用道具 举报
jszxzym
论坛元老   /  发表于:2013-7-30 16:31:00
6#
代码沿袭博客示例中 web下页面报表的动态数据绑定 中的思路。

数据获取确定是正确的,追踪得到的数据结果跟3楼是一样的。

另外该报表中的另一个table可以成功显示数据。

系列值,系列,类别  都绑定了
回复 使用道具 举报
jszxzym
论坛元老   /  发表于:2013-7-30 16:39:00
7#
尝试了不添加系列值  也是这个情况
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-7-30 17:55:00
8#
jszxzym 你好

我这边先测试一下,明天给你回复结果。
回复 使用道具 举报
jszxzym
论坛元老   /  发表于:2013-7-31 09:58:00
9#
补充:
1.直接绑定数据库时 可以成功显示柱状图
2.动态数据源的数据结果改为连续的,即:
DepartName       Year    Invest
部门A                   2008     100
部门A                   2009     4000
部门A                   2010     2000
部门A                   2011     20
部门B                   2008     100
部门B                   2009     1000
部门B                   2010     150
部门B                   2011     2000
部门C                   2008      400
部门C                   2009      200
部门C                   2010      2000
部门C                   2011      1000

还是没有柱。。。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-7-31 11:11:00
10#
是的,我这边也重现了这个问题,我需要和产品团队确认一下这个问题,预计会在2个工作日得到回复,到时我会给你回帖。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部