找回密码
 立即注册

QQ登录

只需一步,快速开始

漠漠黄沙

注册会员

2

主题

5

帖子

38

积分

注册会员

积分
38
最新发帖
漠漠黄沙
注册会员   /  发表于:2018-1-10 08:50  /   查看:3639  /  回复:5
private void button1_Click(object sender, EventArgs e)
        {
            GrapeCity.ActiveReports.PageReport rpt = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(@"PageReport1.rdlx"));
            rpt.Document.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(locatedata1);
            GrapeCity.ActiveReports.Document.PageDocument rpdt = new GrapeCity.ActiveReports.Document.PageDocument(rpt);
            this.viewer1.LoadDocument(rpdt);
        }
        private void locatedata1(object cender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
        {
            if (args.DataSourceName == "DataSource1" && args.DataSetName == "DataSet1")
            {
                 DataSet ds =DBHelperSQL.Query("select * from Hj_basicinfo");
                args.Data = ds.Tables[0];
            }
        }
调试的时候发现方法 private void locatedata1  并没有执行,在报表设计中预览也是没有数据。

本帖子中包含更多资源

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

x

5 个回复

倒序浏览
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2018-1-10 09:20:06
沙发
您好!
您的意思是进行代码调试的时候 根本没有进入  private void locatedata1(object cender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)这个函数是这样嘛?
如果是这样,这样肯定是会报错的,因为报表根本就没有绑定数据。您可以参考下面这段代码:
  1.    public partial class WebForm1 : System.Web.UI.Page
  2.     {
  3.         protected void Page_Load(object sender, EventArgs e)
  4.         {
  5.             GrapeCity.ActiveReports.PageReport rpt = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath(@"动态数据源.rdlx")));         
  6.             rpt.Document.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(locatedate);
  7.             this.WebViewer1.Report = rpt;
  8.         }
  9.         private void locatedate(object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
  10.         {
  11.             if (args.DataSourceName == "DataSource1")
  12.             {
  13.                 if (args.DataSetName == "DataSet1")
  14.                 {
  15.                     args.Data = returndata();
  16.                 }
  17.             }
  18.         }
  19.         private DataTable returndata()
  20.         {
  21.             DataTable dt = new DataTable();
  22.             dt.Columns.Add("产品编号");
  23.             dt.Columns.Add("产品名称");
  24.             dt.Columns.Add("单价");
  25.             dt.Columns.Add("库存量");
  26.             dt.Rows.Add("A001", "苹果", 10, 300);
  27.             dt.Rows.Add("A002", "葡萄", 20, 200);
  28.             dt.Rows.Add("A003", "香蕉", 30, 400);
  29.             return dt;
  30.         }


  31.     }
复制代码



回复 使用道具 举报
漠漠黄沙
注册会员   /  发表于:2018-1-11 09:35:19
板凳
KearneyKang 发表于 2018-1-10 09:20
您好!
您的意思是进行代码调试的时候 根本没有进入  private void locatedata1(object cender, GrapeCity ...

我在winfrom程序里写的一段代码:请看下为什么还是没走locatedata1   这个方法
private void Form1_Load(object sender, EventArgs e)
        {
            GrapeCity.ActiveReports.PageReport rpt = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(@"PageReport1.rdlx"));
            rpt.Document.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(locatedata1);
            GrapeCity.ActiveReports.Document.PageDocument rpdt = new GrapeCity.ActiveReports.Document.PageDocument(rpt);
            this.viewer1.LoadDocument(rpdt);
        }
        private void locatedata1(object cender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
        {
            if (args.DataSourceName == "DataSource1")
            {
                if (args.DataSetName == "DataSet1")
                {
                    args.Data = GetData();
                }
            }
        }
        private DataTable GetData()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Col1");
            dt.Columns.Add("Col2");
            dt.Columns.Add("Col3");
            dt.Rows.Add(1, 1, 1);
            dt.Rows.Add(2, 1, 1);
            dt.Rows.Add(3, 1, 1);
            dt.Rows.Add(4, 1, 1);
            dt.Rows.Add(5, 1, 1);
            dt.Rows.Add(6, 1, 1);
            return dt;
        }
回复 使用道具 举报
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2018-1-11 14:02:56
地板
您好!
您参考我附件的压缩文件,是一个Winform的动态绑定数据源的demo

本帖子中包含更多资源

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

x
回复 使用道具 举报
漠漠黄沙
注册会员   /  发表于:2018-1-13 09:00:46
5#
KearneyKang 发表于 2018-1-11 14:02
您好!
您参考我附件的压缩文件,是一个Winform的动态绑定数据源的demo

非常感谢,问题已经解决了
回复 使用道具 举报
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2018-1-15 09:24:32
6#
好的!祝您工作愉快
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部