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);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C# Excel 템플릿 내보내기(Word 등)프로젝트에서 Excel, Word, pdf 등 템플릿 내보내기를 자주 사용해야 합니다. 다음은 자신이 정리한 간단한 버전의 템플릿 내보내기입니다. 복잡한 내보내기와 유사합니다. 조금만 수정하면 됩니다.다음 내보내기 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.