#region
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing.Imaging;
using System.Windows.Forms;
using CSFrameworkV5.Common;
using CSFrameworkV5.Core;
#endregion
namespace CSFrameworkV5.Library.CommonForms
{
/*
使用方法:
int success = 0; int failed = 0;
frmOperateReport.AddReport(false, "生成数据", "", "开始生成数据...");
frmOperateReport.ShowReport(success, failed);
*/
///
/// 操作报告
///
public partial class frmOperateReport : frmBase
{
private static frmOperateReport _Instance;
///
/// 操作报告开始记录时间
///
private DateTime _BeginTime;
///
/// 数据表
///
private DataTable _Result;
private frmOperateReport()
{
InitializeComponent();
_BeginTime = DateTime.Now;
_Result = BuildResultTable();
}
public int Failed
{
get
{
if (_Result != null)
{
var rs = _Result.Select("IsError='Y'");
return rs.Length;
}
return 0;
}
}
public static frmOperateReport Instance => _Instance;
public int Success
{
get
{
if (_Result != null)
{
var rs = _Result.Select("IsError<>'Y'");
return rs.Length;
}
return 0;
}
}
///
/// 增加一条报告内容
///
/// 是否错误报告,错误:True, 提示:False
/// 操作步骤
/// 参考编号
/// 报告内容
public static void AddReport(bool error, string stepText, string refID,
string content)
{
if (_Instance == null) _Instance = new frmOperateReport();
var R = _Instance._Result.NewRow();
R["IsError"] = error ? "Y" : "N";
R["Icon"] = CImageLibrary.GetImageBytes(
error ? _Instance.picErr.Image : _Instance.picInfo.Image,
ImageFormat.Jpeg);
R["StepText"] = stepText;
R["RefID"] = refID;
R["Content"] = content;
_Instance._Result.Rows.Add(R);
}
///
/// 添加操作报告表
///
/// 操作报告表
public static void AddReport(DataTable dtReport)
{
foreach (DataRow R in dtReport.Rows)
AddReport(
R["IsError"].ToStringEx() == "Y",
R["StepText"].ToStringEx(),
R["RefID"].ToStringEx(),
R["Content"].ToStringEx());
}
///
/// 添加操作报告表
///
///
public static void AddReport(List reports)
{
foreach (var item in reports)
AddReport(item.IsError, item.StepText, item.RefID,
item.Content);
}
private void btnClose_Click(object sender, EventArgs e)
{
Close();
_Instance = null;
}
///
/// 生成报表内容表
///
///
private DataTable BuildResultTable()
{
var dt = new DataTable();
dt.Columns.Add("IsError", typeof(string));
dt.Columns.Add("Icon", typeof(byte[]));
dt.Columns.Add("StepText", typeof(string));
dt.Columns.Add("RefID", typeof(string));
dt.Columns.Add("Content", typeof(string));
return dt;
}
private void frmAttendGeneratorReport_FormClosed(object sender,
FormClosedEventArgs e)
{
_Instance = null;
}
private void frmAttendGeneratorReport_Load(object sender, EventArgs e)
{
gcSummary.DataSource = _Result;
gcSummary.RefreshDataSource();
}
///
/// 初始化报告窗体标题,列宽度
///
/// 窗体标题,不设置,预设为空
public static void InitReport(string caption)
{
if (_Instance == null) _Instance = new frmOperateReport();
_Instance._Result.Rows.Clear();
if (caption != "")
{
_Instance.Text = caption;
_Instance.lblTitle.Text = caption;
}
}
///
/// 初始化报告窗体标题,列宽度
///
/// 窗体标题,不设置,预设为空
/// 不设置,预设为0
/// 不设置,预设为0
/// 不设置,预设为0
public static void InitReport(string caption, int col1Width,
int col2Width, int col3Width)
{
InitReport(caption);
if (col1Width > 0) _Instance.colStepText.Width = col1Width;
if (col2Width > 0) _Instance.colRefID.Width = col2Width;
if (col3Width > 0) _Instance.colContent.Width = col3Width;
}
private void ShowInfo(int success, int failed)
{
lbSuccess.Text = success.ToStringEx();
lbFailed.Text = failed.ToStringEx();
var ts = DateTime.Now - _BeginTime;
var ss = Math.Round(ts.TotalSeconds, 1) + double.Parse("0.1");
lbTime.Text = ss.ToStringEx() + " 秒";
}
///
/// 显示报告
///
///
///
public static void ShowReport(int success, int failed)
{
if (_Instance != null)
{
_Instance.panel3.Visible = true;
_Instance.ShowInfo(success, failed);
_Instance.ShowDialog();
}
}
public static void ShowReport(string caption,
List items)
{
if (_Instance == null) InitReport(caption);
_Instance._Result.Rows.Clear();
AddReport(items);
ShowReport();
}
///
/// 显示报告
///
public static void ShowReport()
{
if (_Instance != null)
{
_Instance.panel3.Visible = false;
_Instance.ShowInfo(_Instance.Success, _Instance.Failed);
_Instance.ShowDialog();
}
}
public static void ShowReport(DataTable dtReport)
{
AddReport(dtReport);
ShowReport();
}
}
///
/// 报告项,用于frmOperateReport界面
///
public class OperateReportItem
{
public OperateReportItem()
{
}
public OperateReportItem(bool isError, string stepText, string refID,
string content)
{
IsError = isError;
StepText = stepText;
RefID = refID;
Content = content;
}
public string Content { get; set; }
public bool IsError { get; set; }
public string RefID { get; set; }
public string StepText { get; set; }
}
}