C1Report is now obsolete. To stay up to date, migrate to FlexReport.

Posted by: jody.handley on 18 July 2018, 4:54 am EST

  • Posted 18 July 2018, 4:54 am EST

    Starting with the 2018 v2 release, C1Report has been marked obsolete. We encourage C1Report users to migrate to FlexReport, an enhanced version of C1Report.

    How to convert: https://www.grapecity.com/en/blogs/3-ways-to-convert-your-c1report-to-flexreport

    Thanks!
  • Replied 3 October 2018, 6:41 pm EST

    Hi,

    there are components in the C1Report assembly that don't have an equivalent in C1FlexReport, e.g. "RenderTable" and the C1PrintDocument stuff.

    What are the plans for those? Please don't make them obsolete without replacement.

    Best regards

    Wolfgang
  • Replied 28 September 2018, 2:53 pm EST

    I'd like to know the answer to this as well.
  • Replied 30 September 2018, 7:53 pm EST

    Hello,

    Only C1Report has been marked obsolete but not C1PrintDocument. 
    C1PrintDocument will not have equivalent libraries in FlexReport. Thus, if you are using C1PrintDocument, we request you to continue using it with C1Report.

    Best Regards,
    Esha
  • Replied 3 October 2018, 6:45 pm EST

    And you plan to continue supporting it - at least with bug fixes if necessary?

    Best regards

    Wolfgang
  • Replied 4 October 2018, 9:27 am EST

    esha.dhir said:
    Hello,

    Only C1Report has been marked obsolete but not C1PrintDocument. 
    C1PrintDocument will not have equivalent libraries in FlexReport. Thus, if you are using C1PrintDocument, we request you to continue using it with C1Report.

    Best Regards,
    Esha


    Sorry, but in my opinion C1Report references should not be marked obsolete until these features are available in FlexReport or there is an equivalent replacement. If your answer is that we still use C1Report for C1PrintDocument then it is not obsolete.
  • Replied 4 October 2018, 8:33 pm EST

    Hello,

    C1FlexReport contains almost all the features of C1Report and hence, C1Report is marked obsolete now. The below mentioned blog post shows feature comparison list between the two reports:
    https://www.grapecity.com/en/blogs/migrating-from-c1report-to-flexreport


    However, since C1PrintDocument is not supported with C1FlexReport, you can continue using it with the latest release builds of C1Report. In case you are facing any major issues while using C1PrintDocument, do let us know. We will assist you in the best possible manner.

    Regards,
    Esha
  • Replied 11 February 2019, 10:10 am EST

    Still need help with c1report. I have a List of custom
    objects that I am unable to figure out how to assign the values to the report fields.
  • Replied 11 February 2019, 4:44 pm EST

    Hi,

    Please refer this documentation link explaining how to use custom data sources for C1Report:
    http://help.grapecity.com/componentone/NetHelp/c1report/webframe.html#customdatasources.html
    Once the report is bound, you can set the Text property of the field with the suitable column name and then set its Calculated property to True.

    Let me know if you need further assistance.

    Best Regards,
    Esha
  • Replied 11 March 2019, 5:08 am EST

    esha mam,

    i decided to migrate our reports from C1Report to FlexReport and did it sucessfully except..

    1. FlexReport is being fully populated very fast.

    2. But when FlexViewer1.DocumentSource = FlexReport1 is set at runtime for previewing, it got stuck for a long time to load. I mean it's very slow to display preview for more than 30-50 pages .

    3. I want to loop through all the items within a particular c1commandlink:

    foreach (C1CommandLink item in _toolBar.CommandLinks)
    {

    //foreach (C1CommandLink subitem in item)
    //{
    // MessageBox.Show(subitem.Text);
    //}
    }



    please help me

    regards-
    sanjeeb
  • Replied 12 March 2019, 8:36 pm EST

    Hello Sanjeeb,

    Report rendering time may increase based on the content and size of the report. With the latest 4.0.20183.343 builds, I have executed the attached application where report rendering takes general amount of time required by the report of it size. Here, it takes around 649 milliseconds to render the report.
    Which version of FlexReport are you using?

    Considering that (3) is not related to FlexReport, this can be done by specifically obtaining the CommandLinks related to the submenu, after typecasting, as follows:
       foreach (C1CommandLink item in c1ToolBar1.CommandLinks)
    {
    MessageBox.Show("CommandLink Text: " + item.Text);
    if (item.Command.GetType() == typeof(C1.Win.C1Command.C1CommandMenu))
    {
    var subMenu = (item.Command as C1.Win.C1Command.C1CommandMenu);
    foreach (C1CommandLink subitem in subMenu.CommandLinks)
    {
    MessageBox.Show("Submenu text: " + subitem.Text);
    }
    }
    }


    This has also been shown in the attached application.
    I further suggest you to create a new thread for C1Command related issues.

    Best Regards,
    Esha
    prj_Toolbar_CommandLink_Items.zipprj_FlexReport.zip
  • Replied 27 March 2019, 3:22 pm EST

    Dear Mam,

    Extremely sorry for delay reply.

    My version is 4.0.20143.1

    i tried to download offline installer version of 20191.1.24 by the following link as you early advised in some blog:

    http://cdn.componentone.com/files/studioinstaller/C1StudioInstaller20191.1.24.exe

    but the link is not found to download the same...

    kindly advise the solution...

    Regards-
    Sanjeeb
  • Replied 28 March 2019, 5:05 pm EST

    Hi Sanjeeb,

    We don't have any plans for building an offline installer for 2019v1.
    However, we are working over creating a *.msi installer for the latest version. I would share once it is ready.

    Thanks.
  • Replied 31 March 2019, 7:54 pm EST

    Hi Mam,

    I have updated our projects to version of 20191.1.24.

    But still the same problem:

    1. FlexReport is being fully populated very fast.

    2. But when FlexViewer1.DocumentSource = FlexReport1 is set at runtime for previewing, it got stuck for a long time to load. I mean it's very slow to display preview for more than 30-50 pages .

    kindly advise the solution...

    Regards-
    Sanjeeb
  • Replied 31 March 2019, 9:55 pm EST

    Hello Sanjeeb,

    Can you please share your observations with the application "prj_FlexReport.zip" attached earlier?
    Also, kindly share your stripped down application along with dummy data so that I can observe the issue as well. This will help me assist you further.
    If you want to share your files over a private platform, you can share them by creating a case over SupportOne: https://supportone.componentone.com

    Regards,
    Esha
  • Replied 1 April 2019, 6:28 pm EST

    Dear Mam,

    As per you advised,
    please find the attached project with dummy data
    which is not being rendering...

    and suggest the solution along with the project.



    prj_FlexReport_with_dummyData.zip


    Regards-
    Sanjeeb
  • Replied 1 April 2019, 7:28 pm EST

    Hi Sanjeeb,

    Regarding the offline installer, I have created a new case over our SupportOne portal with ID: 373368 and responded it there.

    Please continue further discussion on it over there:
    SupportOne: https://supportone.componentone.com

    You can login with the same credentials as you do over the forums.

    ~Pragati
  • Replied 2 April 2019, 10:27 pm EST

    Hello Sanjeeb,

    You are trying to create the fields in Detail section as many times as the records exist in your list. This leads to the delay at your end.
    I suggest you to create the fields as in step 8 on this documentation link:
    http://help.grapecity.com/componentone/NetHelp/FlexReport/webframe.html#Step1of4CreatingaReportDefinition.html

    Further, the data should be set for the report using IC1FlexReportRecordset interface. Use it in your custom class and return the data to data source. Please refer the link below for more information on this:
    http://help.grapecity.com/componentone/NetHelp/FlexReport/webframe.html#UsingCustomDataSourceObjects.html

    You can find its implementation in the product sample for WinForms at:
    ..\Documents\ComponentOne Samples\WinForms\C1FlexReport\CS\ExternalDataSource

    Let me know if the issue persists.

    Regards.
  • Replied 3 April 2019, 4:36 pm EST

    Dear Mam,

    I have tried your suggestions but couldn't ... the result is same ....

    Can you please show me the result against attached zip project ?

    It will be your great help to us ...

    Please mam ...

    prj_FlexReport_with_dummyData.zip

    Looking forward for your help ...

    Regards-
    Sanjeeb
  • Replied 4 April 2019, 10:07 pm EST

    Hello Sanjeeb,

    Please refer the modified sample. Here, the DataSource for the report is set using the List object as follows:

      FlexReport.DataSource.Recordset = dummyData;

    TextFields are added in the Detail section as follows:
          TextField tf1 = new TextField();
    tf1.Name = "Fld1";
    tf1.Text.Expression= "Miti";
    tf1.Left = 500;
    tf1.Top = topPos;
    tf1.Width = 1000;
    tf1.Height = height;
    FlexReport.Sections.Detail.Fields.Add(tf1);


    Setting the Text.Expression property makes the field take value from the Recordset columns.
    Now that we are not creating the fields individually for each record, the execution time decreases considerably. I have also attached a screenshot of the rendered report with 334 pages.

    Regards.
    prj_FlexReport_with_dummyData_mod.zip
  • Replied 6 April 2019, 12:55 am EST

    Dear Esha Mam,

    Thankx a lot.

    You solved my biggest problem ever I felt.

    Will let you know anything I stuck with...

    Thank you very much.


    Regards-
    Sanjeeb
  • Replied 23 May 2019, 4:10 pm EST

    Dear Esha Mam,

    I have one more problem to this regard that when I set:

    FlexReport.DataSource.Recordset = dummyData;

    I don't know how to format data conditionally like
    1. blank for zero values
    2.conditional fonts and much more...

    kindly request you to suggest the solution.

    Best Regards-
    Sanjeeb
  • Replied 23 May 2019, 9:07 pm EST

    Hi Sanjeeb,

    To set an empty string in place of 0 for the DrAmt TextField and changing the font of LedgerName TextField based on this condition, you can use the StartSection event of the report as follows:

    private void FlexReport_StartSection(object sender, ReportEventArgs e)
    {
    string zero = "0";
    if(e.Section == SectionTypeEnum.Detail)
    {
    tf7.Text.Expression = "DrAmt";
    if (tf7.Text.ValueAsString.Equals(zero))
    {
    tf7.Text = " ";
    tf5.Font.Bold = true;
    tf5.Font.Name = "Times New Roman";
    }
    else
    {
    tf7.Text.Expression = "DrAmt";
    tf5.Font.Bold = false;
    tf5.Font.Name = "Consolas";
    }
    }
    }
    }


    Likewise, you can do it for any of the fields in your report.
    The modified application implementing this functionality is attached for your reference.

    Thanks,
    Esha
    prj_FlexReport_EmptyVal.zip
  • Replied 25 May 2019, 4:58 pm EST

    Dear Esha Mam,

    the above technique can only be applied to a single specific field for every report seperately.

    can you please suggest global approach
    which can be applied for any field equals to zero value
    to be replaced with blank string ?

    can we get current recordset ? so that we can format conditionally by it's value ?

    Regards-
    Sanjeeb
  • Replied 27 May 2019, 9:05 pm EST

    Hi Sanjeeb,

    The code can be modified as follows to meet your requirement:

     private void FlexReport_StartSection(object sender, ReportEventArgs e)
    {
    string zero = "0";
    if(e.Section == SectionTypeEnum.Detail)
    {
    tf7.Text.Expression = "DrAmt";
    tf8.Text.Expression = "CrAmt";
    foreach (FieldBase fb in FlexReport.Fields)
    {
    if(fb is Field)
    {
    return;
    }
    else if (fb is TextField)
    {
    TextField tf = new TextField();
    tf= (TextField)fb;

    if (tf.Text.ValueAsString!=null && tf.Text.ValueAsString.Equals(zero))
    {
    tf.Text = " ";
    }
    else
    {
    if (tf.Name == "Fld7")
    tf7.Text.Expression = "DrAmt";

    if (tf.Name == "Fld8")
    tf8.Text.Expression = "CrAmt";
    }
    }
    }
    }
    }


    This is the generic code where two TextFields tf7 and tf8 are specified for the else part, in order to set the data in case the value is not zero.
    Please find the modified sample attached.

    Thanks,
    Esha
    prj_FlexReport_FieldBase.zip
Need extra support?

Upgrade your support plan and get personal unlimited phone support with our customer engagement team

Learn More

Forum Channels