598 lines
26 KiB
C#
598 lines
26 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Drawing;
|
|||
|
using System.Windows.Forms;
|
|||
|
using DevExpress.XtraEditors;
|
|||
|
using DeviceRepair.Models.Enum;
|
|||
|
using DevExpress.XtraGrid.Views.Grid;
|
|||
|
using System.Reflection;
|
|||
|
using DevExpress.XtraGrid.Columns;
|
|||
|
using DeviceRepair.Models.Attr;
|
|||
|
using System.Linq;
|
|||
|
using DeviceRepair.Models.OperationHistory;
|
|||
|
|
|||
|
namespace TsSFCDevice.Client.Launch.History
|
|||
|
{
|
|||
|
public partial class frmBaseHistory : DevExpress.XtraEditors.XtraForm
|
|||
|
{
|
|||
|
HistoryType HisType;
|
|||
|
public Type CurrentHistoryItemType;
|
|||
|
private Type ReposType;
|
|||
|
Object CurrentRepos = null;
|
|||
|
|
|||
|
public frmBaseHistory(HistoryType hisType, Type vType, string vTitle = "历史数据查询")
|
|||
|
{
|
|||
|
InitializeComponent();
|
|||
|
|
|||
|
HisType = hisType;
|
|||
|
CurrentHistoryItemType = vType;
|
|||
|
this.Text = vTitle;
|
|||
|
|
|||
|
ReposType = typeof(Biz.Impl.HisRepository<>); ;
|
|||
|
ReposType = ReposType.MakeGenericType(CurrentHistoryItemType);
|
|||
|
CurrentRepos = Activator.CreateInstance(ReposType);
|
|||
|
|
|||
|
|
|||
|
dvDatas.CustomDrawRowIndicator += DvDatas_CustomDrawRowIndicator;
|
|||
|
dvDatas.RowCellStyle += dvDatas_RowCellStyle;
|
|||
|
lcgTimeFilter.CustomHeaderButtons[0].Properties.CheckedChanged += Properties_CheckedChanged;
|
|||
|
|
|||
|
#region 设置默认时间(一周内)
|
|||
|
|
|||
|
dtStart.EditValue = System.DateTime.Now.AddDays(-7);
|
|||
|
|
|||
|
dtEnd.EditValue = System.DateTime.Now;
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
SetTimeFormat();
|
|||
|
|
|||
|
#region 设置默认值
|
|||
|
|
|||
|
dvDatas.CustomColumnDisplayText += DvDatas_CustomColumnDisplayText;
|
|||
|
dvDatas.CustomDrawEmptyForeground += DvDatas_CustomDrawEmptyForeground;
|
|||
|
dvDatas.MouseMove += DvDatas_MouseMove;
|
|||
|
dvDatas.MouseDown += DvDatas_MouseDown;
|
|||
|
|
|||
|
InitEmptyFont();
|
|||
|
dvDatas.OptionsPrint.AutoWidth = false;
|
|||
|
#endregion
|
|||
|
splashScreenManager1.ShowWaitForm();
|
|||
|
}
|
|||
|
|
|||
|
private void btnExport_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
if (dvDatas.DataRowCount == 0)
|
|||
|
{
|
|||
|
throw new Exception("当前没有数据可供操作!");
|
|||
|
}
|
|||
|
SaveFileDialog saveFileDialog = new SaveFileDialog();
|
|||
|
saveFileDialog.Title = "导出Excel";
|
|||
|
saveFileDialog.Filter = "Excel文件(*.xlsx)|*.xlsx";
|
|||
|
DialogResult dialogResult = saveFileDialog.ShowDialog(this);
|
|||
|
if (dialogResult == DialogResult.OK)
|
|||
|
{
|
|||
|
DevExpress.XtraPrinting.XlsxExportOptionsEx options = new DevExpress.XtraPrinting.XlsxExportOptionsEx();
|
|||
|
options.ExportType = DevExpress.Export.ExportType.WYSIWYG;
|
|||
|
dvDatas.ExportToXlsx(saveFileDialog.FileName.ToString(), options);
|
|||
|
XtraMessageBoxHelper.Info("导出成功!");
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
XtraMessageBoxHelper.Error(ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void btnSearch_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
if (lcgTimeFilter.CustomHeaderButtons[0].Properties.Checked)
|
|||
|
{
|
|||
|
if (dtStart.EditValue == null || dtEnd.EditValue == null)
|
|||
|
{
|
|||
|
throw new Exception("请选择时间!");
|
|||
|
}
|
|||
|
if (dtStart.Time > dtEnd.Time)
|
|||
|
{
|
|||
|
throw new Exception("开始时间不能大于结束时间!");
|
|||
|
}
|
|||
|
if (dtStart.Time < DateTime.Now.AddYears(-2))
|
|||
|
{
|
|||
|
throw new Exception("开始时间超出时间范围!");
|
|||
|
}
|
|||
|
if (dtEnd.Time > DateTime.Now.AddYears(2))
|
|||
|
{
|
|||
|
throw new Exception("结束时间超出时间范围!");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#region 动态控件的
|
|||
|
splashScreenManager1.ShowWaitForm();
|
|||
|
splashScreenManager1.SetWaitFormDescription("正在组织查询参数...");
|
|||
|
var vParams = GetQueryParams();
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
SetParams(vParams);
|
|||
|
splashScreenManager1.SetWaitFormDescription("正在向服务器请求查询结果...");
|
|||
|
var vRtm = ReposType.InvokeMember("HistoryGet", System.Reflection.BindingFlags.Default | BindingFlags.InvokeMethod, null, CurrentRepos, null);
|
|||
|
splashScreenManager1.SetWaitFormDescription("服务器返回查询结果...");
|
|||
|
|
|||
|
if (vRtm == null)
|
|||
|
{
|
|||
|
gdvData.DataSource = null;
|
|||
|
throw new Exception("没有查询到内容!");
|
|||
|
}
|
|||
|
|
|||
|
gdvData.DataSource = vRtm;
|
|||
|
dvDatas.BestFitColumns();
|
|||
|
CloseWait();
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
CloseWait();
|
|||
|
if (ex.InnerException != null)
|
|||
|
{
|
|||
|
XtraMessageBoxHelper.Error(ex.InnerException.Message);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
XtraMessageBoxHelper.Error(ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void frmBaseHistory_Load(object sender, EventArgs e)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
Cursor.Current = Cursors.WaitCursor;
|
|||
|
InitQueryCtls(dvDatas, GetQueryItems(CurrentHistoryItemType));
|
|||
|
InitGrid(dvDatas, GetGridColumns(CurrentHistoryItemType));
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
Cursor.Current = Cursors.Default;
|
|||
|
CloseWait();
|
|||
|
XtraMessageBoxHelper.Error(ex.Message);
|
|||
|
}
|
|||
|
finally
|
|||
|
{
|
|||
|
CloseWait();
|
|||
|
Cursor.Current = Cursors.Default;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void bbiPrint_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
void CloseWait()
|
|||
|
{
|
|||
|
if (splashScreenManager1.IsSplashFormVisible)
|
|||
|
{
|
|||
|
splashScreenManager1.CloseWaitForm();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#region 参数相关
|
|||
|
|
|||
|
private IDictionary<string, string> GetQueryParams()
|
|||
|
{
|
|||
|
IDictionary<string, string> vParams = new Dictionary<string, string>();
|
|||
|
foreach (Control eachCtl in lcMain.Controls)
|
|||
|
{
|
|||
|
if (eachCtl.Tag == null)
|
|||
|
{
|
|||
|
continue;
|
|||
|
}
|
|||
|
HistoryQueryParam vQuery = eachCtl.Tag as HistoryQueryParam;
|
|||
|
if (vQuery == null)
|
|||
|
{
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
if (vQuery.CtlType == HistoryFilterCtlType.TextBox)
|
|||
|
{
|
|||
|
var vTextEdit = (TextEdit)eachCtl;
|
|||
|
var vTextValue = vTextEdit.Text.Trim();
|
|||
|
vParams.Add(vQuery.QueryCode, vTextValue);
|
|||
|
}
|
|||
|
else if (vQuery.CtlType == HistoryFilterCtlType.ComboBox)
|
|||
|
{
|
|||
|
var vComboBoxEdit = (ComboBoxEdit)eachCtl;
|
|||
|
|
|||
|
if (!string.IsNullOrEmpty(vComboBoxEdit.Text))
|
|||
|
{
|
|||
|
if (!vComboBoxEdit.Text.Equals("--请选择--"))
|
|||
|
{
|
|||
|
vParams.Add(vQuery.QueryCode, vQuery[vComboBoxEdit.Text]);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
vParams.Add(vQuery.QueryCode, string.Empty);
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
vParams.Add(vQuery.QueryCode, string.Empty);
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//暂时就弄了文本框和选择框,其他的以后用到再说 Myl20210528
|
|||
|
//妈的,是真心累!
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
vParams.Add("LogStartDateTime", lcgTimeFilter.CustomHeaderButtons[0].Properties.Checked ? dtStart.Time.ToString("yyyy-MM-dd HH:mm:ss") : string.Empty);
|
|||
|
vParams.Add("LogEndDateTime", lcgTimeFilter.CustomHeaderButtons[0].Properties.Checked ? dtEnd.Time.ToString("yyyy-MM-dd HH:mm:ss") : string.Empty);
|
|||
|
|
|||
|
return vParams;
|
|||
|
}
|
|||
|
|
|||
|
private void SetParams(IDictionary<string, string> vParamsDic)
|
|||
|
{
|
|||
|
ReposType.GetProperty("ApiParameters").SetValue(CurrentRepos, vParamsDic);
|
|||
|
ReposType.GetProperty("HisType").SetValue(CurrentRepos, HisType);
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Gv 控件相关
|
|||
|
|
|||
|
private void DeleteGridColumns(GridView dvGrid, params string[] colmns)
|
|||
|
{
|
|||
|
dvGrid.Columns.Clear();
|
|||
|
}
|
|||
|
private void DeleteQueryCtls()
|
|||
|
{
|
|||
|
Root.Remove(lcciUserCode);
|
|||
|
Root.Remove(lcciOpType);
|
|||
|
Root.Remove(lcciClientName);
|
|||
|
}
|
|||
|
|
|||
|
private void InitGrid(GridView dvGrid, IList<HistoryGridColumn> vColumns)
|
|||
|
{
|
|||
|
DeleteGridColumns(dvGrid);
|
|||
|
int iColumnIndex = 0;
|
|||
|
foreach (var eachColumn in vColumns)
|
|||
|
{
|
|||
|
GridColumn bgColumn = new GridColumn();
|
|||
|
bgColumn.OptionsColumn.FixedWidth = false;
|
|||
|
bgColumn.OptionsColumn.AllowShowHide = false;
|
|||
|
bgColumn.OptionsColumn.AllowSize = true;
|
|||
|
bgColumn.OptionsColumn.AllowMove = false;
|
|||
|
bgColumn.OptionsColumn.AllowFocus = true;
|
|||
|
bgColumn.OptionsColumn.AllowEdit = false;
|
|||
|
bgColumn.OptionsColumn.ReadOnly = true;
|
|||
|
bgColumn.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.True;
|
|||
|
bgColumn.OptionsColumn.AllowGroup = DevExpress.Utils.DefaultBoolean.True;
|
|||
|
bgColumn.OptionsColumn.AllowIncrementalSearch = false;
|
|||
|
bgColumn.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.False;
|
|||
|
bgColumn.Visible = true;
|
|||
|
bgColumn.OptionsColumn.Printable = eachColumn.AllowPrint ? DevExpress.Utils.DefaultBoolean.True : DevExpress.Utils.DefaultBoolean.False;
|
|||
|
|
|||
|
#region 列头如果特性描述中有换行存在的情况
|
|||
|
//这样不一定有用,后面再说
|
|||
|
bgColumn.AppearanceHeader.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap;
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
bgColumn.Caption = eachColumn.ColumnDescription;
|
|||
|
bgColumn.FieldName = eachColumn.ColumnCode;
|
|||
|
bgColumn.Name = $"colColumnItem{iColumnIndex++}";
|
|||
|
bgColumn.AppearanceHeader.Options.UseBackColor = true;
|
|||
|
bgColumn.AppearanceHeader.Options.UseFont = true;
|
|||
|
bgColumn.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
|
|||
|
bgColumn.AppearanceCell.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
|
|||
|
bgColumn.Tag = eachColumn;
|
|||
|
|
|||
|
if (eachColumn.ColumnType.Name == "DateTime")
|
|||
|
{
|
|||
|
bgColumn.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
|
|||
|
bgColumn.DisplayFormat.FormatString = eachColumn.FormatString;
|
|||
|
}
|
|||
|
|
|||
|
if (iColumnIndex == 1)
|
|||
|
{
|
|||
|
#region 添加汇总页脚
|
|||
|
bgColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] {
|
|||
|
new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Count, eachColumn.ColumnCode, "合计:{0} 条历史记录")});
|
|||
|
#endregion
|
|||
|
}
|
|||
|
dvGrid.Columns.Add(bgColumn);
|
|||
|
}
|
|||
|
gdvData.MainView = dvGrid;
|
|||
|
}
|
|||
|
|
|||
|
private void InitQueryCtls(GridView dvGrid, IList<HistoryQueryParam> vQuerys)
|
|||
|
{
|
|||
|
DeleteQueryCtls();
|
|||
|
int iCtlIndex = 0;
|
|||
|
foreach (var eachQuery in vQuerys)
|
|||
|
{
|
|||
|
DevExpress.XtraLayout.LayoutControlItem lccQueryParam = new DevExpress.XtraLayout.LayoutControlItem();
|
|||
|
lccQueryParam.Name = $"lcciQuery{iCtlIndex}";
|
|||
|
lccQueryParam.AppearanceItemCaption.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
|||
|
lccQueryParam.AppearanceItemCaption.Options.UseFont = true;
|
|||
|
lccQueryParam.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
|
|||
|
lccQueryParam.AppearanceItemCaption.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
|
|||
|
lccQueryParam.ContentHorzAlignment = DevExpress.Utils.HorzAlignment.Center;
|
|||
|
lccQueryParam.ContentVertAlignment = DevExpress.Utils.VertAlignment.Center;
|
|||
|
|
|||
|
if (eachQuery.CtlType == HistoryFilterCtlType.TextBox)
|
|||
|
{
|
|||
|
#region 文本框
|
|||
|
DevExpress.XtraEditors.TextEdit vTxtEdit = new DevExpress.XtraEditors.TextEdit();
|
|||
|
vTxtEdit.Name = $"txtQuery{iCtlIndex}";
|
|||
|
vTxtEdit.Properties.Appearance.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
|||
|
vTxtEdit.Properties.Appearance.Options.UseFont = true;
|
|||
|
vTxtEdit.Size = new System.Drawing.Size(379, 26);
|
|||
|
vTxtEdit.StyleController = this.lcMain;
|
|||
|
vTxtEdit.TabIndex = iCtlIndex;
|
|||
|
vTxtEdit.Tag = eachQuery;
|
|||
|
|
|||
|
lccQueryParam.Control = vTxtEdit;
|
|||
|
|
|||
|
#region 控制默认内容值-Myl20210625
|
|||
|
|
|||
|
if (!string.IsNullOrEmpty(eachQuery.DefaultNotShowQueryParamValue))
|
|||
|
{
|
|||
|
vTxtEdit.Text = eachQuery.DefaultNotShowQueryParamValue;
|
|||
|
vTxtEdit.Enabled = false;
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
this.lcMain.Controls.Add(this.txtUserCode);
|
|||
|
#endregion
|
|||
|
}
|
|||
|
else if (eachQuery.CtlType == HistoryFilterCtlType.ComboBox)
|
|||
|
{
|
|||
|
#region 复选框
|
|||
|
DevExpress.XtraEditors.ComboBoxEdit vComboBox = new DevExpress.XtraEditors.ComboBoxEdit();
|
|||
|
vComboBox.Name = $"cmbQuery{iCtlIndex}";
|
|||
|
vComboBox.Properties.Appearance.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
|||
|
vComboBox.Properties.Appearance.Options.UseFont = true;
|
|||
|
vComboBox.Properties.Items.AddRange(new object[] { "--请选择--" });
|
|||
|
vComboBox.Properties.Items.AddRange(eachQuery.ComboBoxQueryDisplays.Split(','));
|
|||
|
vComboBox.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor;
|
|||
|
vComboBox.Size = new System.Drawing.Size(343, 26);
|
|||
|
vComboBox.StyleController = this.lcMain;
|
|||
|
vComboBox.TabIndex = iCtlIndex;
|
|||
|
vComboBox.Tag = eachQuery;
|
|||
|
lccQueryParam.Control = vComboBox;
|
|||
|
|
|||
|
#region 控制默认内容值-Myl20210625
|
|||
|
|
|||
|
if (!string.IsNullOrEmpty(eachQuery.DefaultNotShowQueryParamValue))
|
|||
|
{
|
|||
|
vComboBox.Text = eachQuery.DefaultNotShowQueryParamValue;
|
|||
|
vComboBox.Enabled = false;
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
this.lcMain.Controls.Add(vComboBox);
|
|||
|
#endregion
|
|||
|
}
|
|||
|
|
|||
|
lccQueryParam.Size = new System.Drawing.Size(475, 30);
|
|||
|
lccQueryParam.Text = eachQuery.QueryDescription;
|
|||
|
lccQueryParam.TextSize = new System.Drawing.Size(80, 19);
|
|||
|
this.layoutControlGroup1.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { lccQueryParam });
|
|||
|
iCtlIndex++;
|
|||
|
}
|
|||
|
layoutControlGroup1.BestFit();
|
|||
|
}
|
|||
|
|
|||
|
private void dvDatas_RowCellStyle(object sender, RowCellStyleEventArgs e)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
private void Properties_CheckedChanged(object sender, EventArgs e)
|
|||
|
{
|
|||
|
lcStartTime.Enabled = lcEndTime.Enabled = lcgTimeFilter.CustomHeaderButtons[0].Properties.Checked;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
private void DvDatas_MouseDown(object sender, MouseEventArgs e)
|
|||
|
{
|
|||
|
if (trySearchingAgainBoundsContainCursor)
|
|||
|
{
|
|||
|
btnSearch.PerformClick();
|
|||
|
}
|
|||
|
}
|
|||
|
private void DvDatas_MouseMove(object sender, MouseEventArgs e)
|
|||
|
{
|
|||
|
trySearchingAgainBoundsContainCursor = trySearchingAgainBounds.Contains(e.Location);
|
|||
|
gdvData.Cursor = trySearchingAgainBoundsContainCursor ? Cursors.Hand : Cursors.Default;
|
|||
|
dvDatas.InvalidateRect(trySearchingAgainBounds);
|
|||
|
}
|
|||
|
|
|||
|
private void DvDatas_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
|
|||
|
{
|
|||
|
if (e.Info.IsRowIndicator && e.RowHandle >= 0)
|
|||
|
{
|
|||
|
e.Info.DisplayText = (e.RowHandle + 1).ToString();
|
|||
|
e.Info.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
|
|||
|
e.Info.Appearance.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
|
|||
|
}
|
|||
|
}
|
|||
|
private void DvDatas_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
var vColumn = e.Column.Tag as HistoryGridColumn;
|
|||
|
if (vColumn != null)
|
|||
|
{
|
|||
|
if (vColumn.ColumnType.Name == "DateTime" || vColumn.ColumnDescription.Contains("时间"))
|
|||
|
{
|
|||
|
var vValue = e.Value?.ToString()?.Trim();
|
|||
|
if (string.IsNullOrEmpty(vValue))
|
|||
|
{
|
|||
|
e.DisplayText = "N/A";
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
catch
|
|||
|
{ }
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
private void DvDatas_CustomDrawEmptyForeground(object sender, DevExpress.XtraGrid.Views.Base.CustomDrawEventArgs e)
|
|||
|
{
|
|||
|
e.DefaultDraw();
|
|||
|
e.Appearance.Options.UseFont = true;
|
|||
|
e.Appearance.Font = noMatchesFoundTextFont;
|
|||
|
Size size = e.Appearance.CalcTextSize(e.Cache, noMatchesFoundText, e.Bounds.Width).ToSize();
|
|||
|
int x = (e.Bounds.Width - size.Width) / 2;
|
|||
|
int y = e.Bounds.Y + offset;
|
|||
|
noMatchesFoundBounds = new Rectangle(new Point(x, y), size);
|
|||
|
e.Appearance.DrawString(e.Cache, noMatchesFoundText, noMatchesFoundBounds);
|
|||
|
e.Appearance.Font = trySearchingAgainBoundsContainCursor ? trySearchingAgainTextFontBold : trySearchingAgainTextFont;
|
|||
|
size = e.Appearance.CalcTextSize(e.Cache, trySearchingAgainText, e.Bounds.Width).ToSize();
|
|||
|
x = noMatchesFoundBounds.X - (size.Width - noMatchesFoundBounds.Width) / 2;
|
|||
|
y = noMatchesFoundBounds.Bottom + offset;
|
|||
|
size.Width += offset;
|
|||
|
trySearchingAgainBounds = new Rectangle(new Point(x, y), size);
|
|||
|
e.Appearance.DrawString(e.Cache, trySearchingAgainText, trySearchingAgainBounds, linkBrush);
|
|||
|
}
|
|||
|
|
|||
|
void SetTimeFormat()
|
|||
|
{
|
|||
|
this.dtStart.Properties.DisplayFormat.FormatString = "yyyy-MM-dd HH:mm:ss";
|
|||
|
this.dtStart.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
|
|||
|
this.dtStart.Properties.EditFormat.FormatString = "yyyy-MM-dd HH:mm:ss";
|
|||
|
this.dtStart.Properties.EditFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
|
|||
|
this.dtStart.Properties.Mask.EditMask = "yyyy-MM-dd HH:mm:ss";
|
|||
|
|
|||
|
|
|||
|
this.dtEnd.Properties.DisplayFormat.FormatString = "yyyy-MM-dd HH:mm:ss";
|
|||
|
this.dtEnd.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
|
|||
|
this.dtEnd.Properties.EditFormat.FormatString = "yyyy-MM-dd HH:mm:ss";
|
|||
|
this.dtEnd.Properties.EditFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
|
|||
|
this.dtEnd.Properties.Mask.EditMask = "yyyy-MM-dd HH:mm:ss";
|
|||
|
}
|
|||
|
|
|||
|
#region 无查询内容时的窗体Grid刷新
|
|||
|
|
|||
|
void InitEmptyFont()
|
|||
|
{
|
|||
|
noMatchesFoundTextFont = new Font("Tahoma", 10);
|
|||
|
trySearchingAgainTextFont = new Font("Tahoma", 15, FontStyle.Underline);
|
|||
|
trySearchingAgainTextFontBold = new Font(trySearchingAgainTextFont, FontStyle.Underline | FontStyle.Bold);
|
|||
|
}
|
|||
|
|
|||
|
private string searchName = string.Empty;
|
|||
|
private Font noMatchesFoundTextFont = null;
|
|||
|
private Font trySearchingAgainTextFont = null;
|
|||
|
private Font trySearchingAgainTextFontBold = null;
|
|||
|
private SolidBrush linkBrush = new SolidBrush(DevExpress.Skins.EditorsSkins.GetSkin(DevExpress.LookAndFeel.UserLookAndFeel.Default.ActiveLookAndFeel).Colors["HyperLinkTextColor"]);
|
|||
|
private string noMatchesFoundText = "没有内容";
|
|||
|
private string trySearchingAgainText = "Try searching again";
|
|||
|
private Rectangle noMatchesFoundBounds = Rectangle.Empty;
|
|||
|
private Rectangle trySearchingAgainBounds = Rectangle.Empty;
|
|||
|
private bool trySearchingAgainBoundsContainCursor = false;
|
|||
|
private int offset = 10;
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 方法
|
|||
|
IList<HistoryQueryParam> GetQueryItems(Type vHisType)
|
|||
|
{
|
|||
|
IList<HistoryQueryParam> hisGridColumns = new List<HistoryQueryParam>();
|
|||
|
PropertyInfo[] domProperties = vHisType.GetProperties();
|
|||
|
IEnumerable<PropertyInfo> domGridFields =
|
|||
|
domProperties.Where<System.Reflection.PropertyInfo>((A) =>
|
|||
|
{
|
|||
|
return A.GetCustomAttributes(typeof(HistoryFilterFieldAttribute), true).Length > 0;
|
|||
|
});
|
|||
|
if ((domGridFields?.Count() ?? 0) == 0)
|
|||
|
{
|
|||
|
throw new ArgumentNullException("实体类中字段均未指定相应的历史查询条件字段属性!");
|
|||
|
}
|
|||
|
foreach (PropertyInfo pi in domGridFields)
|
|||
|
{
|
|||
|
Type colType = pi.PropertyType;
|
|||
|
object[] objConverter = pi.GetCustomAttributes(typeof(HistoryFilterFieldAttribute), true);
|
|||
|
var vCode = ((HistoryFilterFieldAttribute)objConverter[0]).Code;
|
|||
|
var vDescription = ((HistoryFilterFieldAttribute)objConverter[0]).Description;
|
|||
|
var vCtlType = ((HistoryFilterFieldAttribute)objConverter[0]).CtlType;
|
|||
|
var vDefaultValue = ((HistoryFilterFieldAttribute)objConverter[0]).DefaultValue;
|
|||
|
var vFuzzy = ((HistoryFilterFieldAttribute)objConverter[0]).Fuzzy;
|
|||
|
var vQueryItems = ((HistoryFilterFieldAttribute)objConverter[0]).QueryItems;
|
|||
|
var vShowSequence = ((HistoryFilterFieldAttribute)objConverter[0]).ShowSequence;
|
|||
|
var vQueryComBox = ((HistoryFilterFieldAttribute)objConverter[0]).QueryItemDisplayList;
|
|||
|
|
|||
|
var vDefaultNotShowQueryParamValue = ((HistoryFilterFieldAttribute)objConverter[0]).DefaultNotShowQueryParamValue;
|
|||
|
hisGridColumns.Add(new HistoryQueryParam()
|
|||
|
{
|
|||
|
QueryCode = string.IsNullOrEmpty(vCode) ? pi.Name : vCode,
|
|||
|
ShowSequence = vShowSequence,
|
|||
|
QueryItems = vQueryComBox,
|
|||
|
DefaultValue = vDefaultValue,
|
|||
|
CtlType = vCtlType,
|
|||
|
bFuzzy = vFuzzy,
|
|||
|
QueryDescription = vDescription,
|
|||
|
QueryType = colType,
|
|||
|
DefaultNotShowQueryParamValue = vDefaultNotShowQueryParamValue
|
|||
|
});
|
|||
|
}
|
|||
|
var vSequenceColumns = hisGridColumns.OrderBy(O => { return O.ShowSequence; });
|
|||
|
return vSequenceColumns.ToList();
|
|||
|
}
|
|||
|
|
|||
|
public static IList<HistoryGridColumn> GetGridColumns(Type vHisType)
|
|||
|
{
|
|||
|
IList<HistoryGridColumn> hisGridColumns = new List<HistoryGridColumn>();
|
|||
|
PropertyInfo[] domProperties = vHisType.GetProperties();
|
|||
|
IEnumerable<PropertyInfo> domGridFields =
|
|||
|
domProperties.Where<System.Reflection.PropertyInfo>((A) =>
|
|||
|
{
|
|||
|
return A.GetCustomAttributes(typeof(HistoryGridFieldAttribute), true).Length > 0;
|
|||
|
});
|
|||
|
if ((domGridFields?.Count() ?? 0) == 0)
|
|||
|
{
|
|||
|
throw new ArgumentNullException("实体类中字段均未指定相应的表格字段属性!");
|
|||
|
}
|
|||
|
foreach (PropertyInfo pi in domGridFields)
|
|||
|
{
|
|||
|
Type colType = pi.PropertyType;
|
|||
|
object[] objConverter = pi.GetCustomAttributes(typeof(HistoryGridFieldAttribute), true);
|
|||
|
if (objConverter.Length == 0)
|
|||
|
{
|
|||
|
continue;
|
|||
|
}
|
|||
|
var vCode = ((HistoryGridFieldAttribute)objConverter[0]).Code;
|
|||
|
var vDescription = ((HistoryGridFieldAttribute)objConverter[0]).Description;
|
|||
|
var vFormatString = ((HistoryGridFieldAttribute)objConverter[0]).FormatString;
|
|||
|
hisGridColumns.Add(new HistoryGridColumn()
|
|||
|
{
|
|||
|
ColumnCode = string.IsNullOrEmpty(vCode) ? pi.Name : vCode,
|
|||
|
ColumnDescription = vDescription,
|
|||
|
ColumnType = colType,
|
|||
|
FormatString = vFormatString,
|
|||
|
AllowExport = ((HistoryGridFieldAttribute)objConverter[0]).AllowExport,
|
|||
|
AllowPrint = ((HistoryGridFieldAttribute)objConverter[0]).AllowPrint,
|
|||
|
CtlType = ((HistoryGridFieldAttribute)objConverter[0]).CtlType,
|
|||
|
ShowSequence = ((HistoryGridFieldAttribute)objConverter[0]).ShowSequence
|
|||
|
});
|
|||
|
}
|
|||
|
var vSequenceColumns = hisGridColumns.OrderBy(O => { return O.ShowSequence; });
|
|||
|
return vSequenceColumns.ToList();
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
}
|
|||
|
}
|