C# WinForm FastReport Studio 사용 방법:

12692 단어 WinForm
using System;
using System.Data;
using FastReport;
using Szcx.GeneralDB;
using System.Collections.Generic;

namespace CxFastReport
{
    //  
    public abstract class BasePlugin :IfrxUserDataSet, IfrxUserDataSetEvents, IfrxDataSet, IfrxPlugin
    {
        private int itemIndex;
        /// <summary>
        ///      ,     ,     
        /// </summary>
        public int ItemIndex
        {
            get { return itemIndex; }
            set { itemIndex = value; }
        }

        private int columnCount;
        /// <summary>
        ///   
        /// </summary>
        public int ColumnCount
        {
            get { return columnCount; }
            set { columnCount = value; }
        }

        int rowCount = 0;
        /// <summary>
        ///       
        /// </summary>
        public int RowCount
        {
            get { return rowCount; }
            set { rowCount = value; }
        }
        
        #region IfrxUserDataSet   

        string fields;
        /// <summary>
        ///      ,  :('column1'/n'column1'/n........)
        /// </summary>
        public string Fields
        {
            get { return fields; }
            set { fields = value; }
        }

        string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
 
        #endregion

        #region IfrxUserDataSetEvents   

        public void OnFirst() { ItemIndex = 0; }
        public void OnNext() { ItemIndex++; }
        public void OnPrior() { ItemIndex--; }

        public void OnCheckEOF(out bool IsEOF)
        {
            IsEOF = (ItemIndex >= rowCount);
        }

        /// <summary>
        ///        
        /// </summary>
        /// <param name="VarName">  </param>
        /// <param name="Value"> </param>
        public abstract void OnGetValue(object columanName, out object Value);

       #endregion

        #region IfrxDataSet   

        public int CurrentRecordNo { get { return ItemIndex; } }
        public void GoFirst() { ItemIndex = 0; }
        public void GoNext() { ItemIndex++; }
        public void GoPrior() { ItemIndex--; }

        public int FieldsCount { get { return ColumnCount; } }
        public int RecordsCount { get { return this.rowCount; } }


        public int RangeEndCount
        {
            get
            {
                // TODO:  Add ReportDataTable.RangeEndCount getter implementation
                return 0;
            }
            set
            {
                // TODO:  Add ReportDataTable.RangeEndCount setter implementation
            }
        }

        public FastReport.frxRangeBegin RangeBegin
        {
            get
            {
                // TODO:  Add ReportDataTable.RangeBegin getter implementation
                return new FastReport.frxRangeBegin();
            }
            set
            {
                // TODO:  Add ReportDataTable.RangeBegin setter implementation
            }
        } 

        public abstract object ValueOfField(string FieldName);

        string userName = "";

        public string UserName
        {
            get { return userName; }
            set { userName = value; }
        }

        public FastReport.frxRangeEnd RangeEnd
        {
            get
            {
                // TODO:  Add ReportDataTable.RangeEnd getter implementation
                return new FastReport.frxRangeEnd();
            }
            set
            {
                // TODO:  Add ReportDataTable.RangeEnd setter implementation
            }
        }

        #endregion

        #region IfrxPlugin   

        public FastReport.frxPluginType PluginType
        {
            get
            {
                return FastReport.frxPluginType.ptDataSet;
            }
        }

        #endregion
    }
}






using System;
using System.Data;
using FastReport;
using Szcx.GeneralDB;
using System.Collections.Generic;
using Szcx.Misc;

namespace CxFastReport
{
    //  Table     
    public class ReportDataTable : BasePlugin
    {
        private DataTable dataTable;

        /// <summary>
        ///     ,   
        /// </summary>
        /// <param name="table">   </param>
        /// <param name="dataSourceName">        </param>
        public ReportDataTable(DataTable table,string dataSourceName)
        {
            dataTable = table;
            FeildMap.Clear();
            //   
            this.Name = dataSourceName;
            this.UserName = dataSourceName;
            this.RowCount = table.Rows.Count;
            this.Fields = null;
            this.ColumnCount = table.Columns.Count;
            //   
            foreach (DataColumn col in dataTable.Columns)
            {
                 FeildMap.Add(field.FLD_DESC, field);
                 this.Fields += field.FLD_DESC + "/n";
 
            }
        }

        /// <summary>
        ///          
        /// </summary>
        /// <param name="columnName">  </param>
        /// <param name="Value">    </param>
        public override void OnGetValue(object columnName, out object Value)
        {
           //      
           object value = dataTable.Rows[this.ItemIndex][columnName.ToString()];
            // Decimal       Int32,FastReport    Decimal    
            if (Value is Decimal)
            {
                Value = Decimal.ToInt32((Decimal)Value);
            }
        }

        public override object ValueOfField(string FieldName)
        {
            throw new Exception("The method or operation is not implemented.");
        }
    }
}



using System;
using System.Collections.Generic;
using System.Text;
using FastReport;
using System.Data;

namespace CxFastReport
{
    //     
    public class ReportBinding
    {
        private List<BasePlugin> reportBasePlugins = new List<BasePlugin>();

        public void BindToReport(List<BasePlugin> plugins, TfrxReportClass report)
        {
            reportBasePlugins.Clear();
            foreach (BasePlugin plugin in plugins)
            {
                this.reportBasePlugins.Add(plugin);
                report.BindObject(plugin);
                report.SelectDataset(true, plugin);
            }
        }

        /// <summary>
        ///      
        /// </summary>
        public void UnbindFromReport(TfrxReportClass report)
        {
            foreach (BasePlugin local_table in this.reportBasePlugins)
            {
                report.SelectDataset(false, local_table);
            }
            reportBasePlugins.Clear();
        }
    }
}


//  FastReporet   
using System;
using System.Collections.Generic;
using System.Text;
using FastReport;
using System.Data;
using System.Windows.Forms;
using System.Collections;

namespace CxFastReport
{
    public class FrxFastReport : TfrxReportClass
    {
        Form form;
        bool secondLang;
        public bool SecondLang
        {
            get { return secondLang; }
            set { secondLang = value; }
        }

        /// <summary>
        ///          
        /// </summary>
        private ReportBinding reportBinding = null;

        /// <summary>
        ///        :    :ReportDataTable,ReportList   
        /// </summary>
        List<BasePlugin> plugins = new List<BasePlugin>();

        private IList list = null;

        public FrxFastReport(Form form, bool secondLang)
        {
            this.secondLang = secondLang;
            this.reportBinding = new ReportBinding();
            this.form = form;
        }

        Dictionary<string, object> listDataSource = new Dictionary<string, object>();

        /// <summary>
        ///       ,   ,object    ,string     ,
        ///  :ListDataSource.Add(new Dictionary<tableName,dataTable>);
        /// </summary>
        public Dictionary<string, object> ListDataSource
        {
            get { return listDataSource; }
            set { listDataSource = value; }
        }

        /// <summary>
        ///        
        /// </summary>
        public void BindToReport()
        {
            IEnumerator ienumeratorKey = ListDataSource.Keys.GetEnumerator();
            while (ienumeratorKey.MoveNext())
            {
                string key = ienumeratorKey.Current.ToString();
                object reportDataSource = this.ListDataSource[key];
                if (reportDataSource is DataTable)
                {
                    this.plugins.Add(new ReportDataTable((DataTable)reportDataSource, key));
                    continue;
                }
                if (reportDataSource is DataView)
                {
                    DataTable tempTable = ((DataView)reportDataSource).Table;
                    this.plugins.Add(new ReportDataTable(tempTable, key));
                    continue;
                }
                if (reportDataSource is IList)
                {
                    this.list = (IList)reportDataSource;
                    this.plugins.Add(new ReportList(this.list, key));
                    continue;
                }
            }
            this.reportBinding.BindToReport(this.plugins, this);
        }
        
        /// <summary>
        ///      
        /// </summary>
        public void UnbindFromReport()
        {
            this.reportBinding.UnbindFromReport(this);
        }
    }
}


//    
//  FastReport   
 Dictionary<string, DataTable> listDataSource = new Dictionary<string, DataTable>();
   /// <summary>
        ///       ,   ,object    ,string     ,
        ///  :ListDataSource.Add(new Dictionary<tableName,dataTable>);
        /// </summary>
        public Dictionary<string, DataTable> ListDataSource
        {
            get { return listDataSource; }
            set { listDataSource = value; }
        }



        /// <summary>
        ///        
        /// </summary>
        public void BindToReport()
        {
            IEnumerator ienumeratorKey = ListDataSource.Keys.GetEnumerator();
            while (ienumeratorKey.MoveNext())
            {
                string key = ienumeratorKey.Current.ToString();                DataTable reportDataSource = this.ListDataSource[key];
                 this.plugins.Add(new ReportDataTable((DataTable)reportDataSource, key));
                 this.reportBinding.BindToReport(this.plugins, this);
        }



좋은 웹페이지 즐겨찾기