我要做一个报表但是不用绑定,我要用text  object来自己往里面填数据,还有我的报表有点特殊一行数据中第一列和后面的列都是一对多的关系,但是显示的是一行,就象是一条记录,因此我想用代码自己往里面填数据,但是不知道如何实现?

解决方案 »

  1.   

    在报表里放文本框..然后传值就行了.'赋值给报表区域内的某个控件    Function GiveValueToReportControl(ByVal tSection As Section, ByVal ControlName() As String, ByVal ToValue() As String)
            If UBound(ControlName) <> UBound(ToValue) Then
                Throw New System.Exception("所传参的数量和值的数量不等.")
                Exit Function
            End If
            Dim i As Int16
            Dim Cl As TextObject
            For i = 0 To UBound(ControlName)
                Try
                    Cl = tSection.ReportObjects.Item(ControlName(i))
                Catch
                    Throw New Exception("报表内名为:" & ControlName(i) & "控件不存在!")
                End Try
                Cl.Text = ToValue(i).ToString
            Next
        End Function
      

  2.   

    Cl = tSection.ReportObjects.Item(ControlName(i))
    兄弟好像没有Item这个属性吧!
      

  3.   

    private TextObject GetTextObject(string reportObjectName) 
    {
    TextObject text;
    // 按名称获取 ReportObject,将其转换为 TextObject,
    //并返回此对象。
    text =this.report.ReportDefinition.ReportObjects[reportObjectName] as TextObject;
    if (text != null) 
        return text;
    else 
        return null;
    }
    调用:
    TextObject tObj=GetTextObject("Text1");
    tObj.Text ="不知道是不是这个意思";
      

  4.   

    给你一个例子:
    其中:rptReturn为报表类,Section2为TextObject所在的节(如页眉或报表头或details节)。
    第三句赋值就可以了!!祝你好运!!!
    rptReturn rpt = new rptReturn();
    TextObject txtPnrNo = (TextObject)rpt.Section2.ReportObjects["txtPnrNo"];
    txtPnrNo.Text = dc.PnrNo;
      

  5.   

    我是想通过sql动态的来写,我的报表第一列是绑定的然后通过第一列的值来查询其他表的数据然后写到text object上,代码如下:
     private void CrystalReportViewer1_DataBinding(object sender, System.EventArgs e)
    {
    DataTable dt=new DataTable();

    dt=dat_Report.DeviceCheckReport_Re("3");
    DataTable dt1=new DataTable();

    ReportDocument oRpt = new ReportDocument();
    oRpt.Load(Server.MapPath("CheckReport.rpt"));//修改为你自己的正确位置
    oRpt.SetDataSource(dt);
    CrystalReportViewer1.ReportSource = oRpt;
    TextObject FixDate;
    FixDate = oRpt.ReportDefinition.ReportObjects["FixDate"] as TextObject;
    for(int i=0;i<dt.Rows.Count;i++)

    {   

    string dtFix="2005";
    dt1=dat_Report.DeviceCheckReport_Fix(dt.Rows[i]["cDeviceNo"].ToString(),dtFix);

    if (dt1.Rows.Count==0)
    {
    FixDate.Text=" ";
    }
    else
    {

    FixDate.Text = Convert.ToDateTime(dt1.Rows[0]["dtFix"]).ToString("yyyy-MM-dd");
    }
    }
                        }  高手帮忙,实在是不会做,我写出来的记录数是对的但是FixDate.Tex永远是最后一行的值,要怎么才能是text object也跟找第一列的值改变呢,我是初学高手多多指教啊,急的很!分不够在加
      

  6.   

    private TextObject GetTextObject(string reportObjectName) 
    {
    TextObject text;
    // 按名称获取 ReportObject,将其转换为 TextObject,
    //并返回此对象。
    text =this.report.ReportDefinition.ReportObjects[reportObjectName] as TextObject;
    if (text != null) 
        return text;
    else 
        return null;
    }
    调用:
    TextObject tObj=GetTextObject("Text1");
    tObj.Text ="不知道是不是这个意思";
    ------------------------这段代码怎么跟我们公司的一模一样???遇到熟人了???