编程语言
首页 > 编程语言> > 水晶报表中如何以编程方式编辑标签?

水晶报表中如何以编程方式编辑标签?

作者:互联网

我有一个Crystal Reports报表,我想从c#中以编程方式编辑标签.我可以操纵数据源,但不能编辑标签.

我正在设计帐单报告,因此我需要显示公司详细信息,日期时间和其他一些我无法从数据源中获取的信息.

解决方法:

通常对于帐单,公司名称和详细信息(例如地址等)显示在帐单的顶部.在这种情况下,我使用的是报表标题.在这种情况下,您可以轻松传递文本以使其显示出来.在运行时传递内容的另一种方法是使用report参数.您可以将参数绑定到字段或公式.参数也很容易传递.

有一次,我使用以下代码从报表中动态获取参数并将其绑定到gridview:

    private void GetParameters()
    {
        //DataTable dt = new DataTable("Params");
        string dataTableName  = "Params";
        //add a tablestyle to the grid so there will be custom columnstyles available
        // after the datasource has been set....
        DataGridTableStyle ts = new System.Windows.Forms.DataGridTableStyle();
        ts.MappingName = dataTableName;
        dtgParams.TableStyles.Add(ts);

        // DataGridTextBoxColumn
        DataGridTextBoxColumn cParamName = new DataGridTextBoxColumn();
        cParamName.MappingName = "Parameter";
        cParamName.HeaderText = "Parameter";
        cParamName.ReadOnly=true;

        // Add the column style to the column style collection
        ts.GridColumnStyles.Add( cParamName );

        // DataGridTextBoxColumn
        DataGridTextBoxColumn cType = new DataGridTextBoxColumn();
        cType.MappingName = "Data_Type";
        cType.HeaderText = "Data Type";
        cType.ReadOnly=true;

        // Add the column style to the column style collection
        ts.GridColumnStyles.Add( cType );

        // DataGridTextBoxColumn
        DataGridTextBoxColumn cValue = new DataGridTextBoxColumn();
        cValue.MappingName = "Value";
        cValue.HeaderText = "Value";
        cValue.ReadOnly=false;

        // Add the column style to the column style collection
        ts.GridColumnStyles.Add( cValue );

        DataRow dr;
        dt.Columns.Add(new DataColumn("Parameter",typeof(string)));
        dt.Columns.Add(new DataColumn("Data_Type",typeof(string)));
        dt.Columns.Add(new DataColumn("Value",typeof(string)));

        // For all the Parameters defined in the report
        for(int i=0;i<ReportDoc.DataDefinition.ParameterFields.Count;  i++)
        {
            dr = dt.NewRow();
            dr[0] = ReportDoc.DataDefinition.ParameterFields[i].ParameterFieldName;
            dr[1] = ReportDoc.DataDefinition.ParameterFields[i].ParameterValueKind;
            dr[2] = ReportDoc.DataDefinition.ParameterFields[i].DefaultValues[0];
            dt.Rows.Add(dr);
        }
        DataView source = new DataView(dt);
        dtgParams.DataSource = source;
    }

并使用以下代码段设置参数:

    private void SetParamValue  (string paramName, string paramValue)
    {
        ParameterFieldDefinition PFD = null;
        ParameterValues PValues = null;
        ParameterDiscreteValue Parm = null;
        PValues = new ParameterValues();
        PFD = ReportDoc.DataDefinition.ParameterFields[paramName];
        Parm = new ParameterDiscreteValue();
        Parm.Value = paramValue;
        PValues.Add(Parm);
        PFD.ApplyCurrentValues(PValues);
    }

标签:crystal-reports,reporting,c
来源: https://codeday.me/bug/20191023/1915146.html