1.通过oledb直接连接数据库后,我从"字段资源管理器"里直接把需要的字段拖到了水晶报表里去,因为我有已经填充了数据的dataTable,于是我在晶报表查看器里就直接绑定了.代码如下:  
this.crystalReportViewer1.ReportSource=target_dt;
//taget_Dt是我自己的datatable,这个datatable是通过adapter填充的,相关的sql语句是自己写的.
this.crystalReportViewer1.RefreshReport();  
运行后正确显示.弄的自己都挺疑惑了.想知道自己究竟是在执行pull还是push模式.两种模式根本上的区别究竟是什么啊? 2.是不是push模式必须要有对应了表结构的强类型化数据集,自己构造的dataTable可以吗?

解决方案 »

  1.   

    谁能给执行pull,push模式的例子,步骤越详细越好.
      

  2.   

    Mark一下,其实只要满足需求不管是pull模式还是push模式都可以。
      

  3.   

    转一个
    http://blog.ofo.cn/PermaLink.aspx?id=116
      

  4.   

    第一个问题已经弄明白了.第一个问题的答案来自forgot(忘记forgot2000) 对我的帮助,关乎于施动者,也就是"发出提取数据行为的动作者".
    请大家针对第2个问题发表自己的见解!
      

  5.   

    2.是不是push模式必须要有对应了表结构的强类型化数据集,自己构造的dataTable可以吗?3.
    DataSet ds = new DataSet(); //不是强类型化数据集,请大家注意
    ds.Tables.Add(myDt);//myDt是我自己封装后的dataTable
    ds.WriteXml("myDt.Xml",System.Data.XmlWriteMode.WriteSchema);//
    myRpt.SetDataSource("myDt.Xml");
    this.crystalReportViewer1.ReportSource=myRpt_rpt;
    this.crystalReportViewer1.RefreshReport();
    测试通过了的,想知其所以然.
      

  6.   

    在Push模式中,不管你定義的是什麼類型的數據集,甚至是數據文件也好,隻要字段名稱和數據結構跟水晶報表設計的字段一致,就沒有任何的問題。這時候水晶報表設計器做出來的報表相當與一個空的數據集(可能這樣的比喻不是很恰當,但forgot想不出更好的詞匯),你所要做的隻是往裡填充數據而已。當然,數據結構不同不行,比如你的報表設計時候拖放進去的某個字段(例如ID)是整型,你代碼推進去的數據對應ID字段如果是字符型則不行。
      

  7.   

    http://www.dotnetsky.net/showforum-35.html