using DevExpress.Data.Filtering; using DevExpress.Xpo; using DevExpress.Xpo.DB; using DevExpress.XtraEditors; using Ips.Eph.ResolveUtil; using Ips.Library.Basic; using Ips.Library.DxpLib; using Ips.Library.Entity; using Ips.Sps.Sats; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using static DevExpress.Utils.Drawing.Helpers.NativeMethods; namespace Ips.Sps.Ephs { public partial class EphListForm : DevExpress.XtraEditors.XtraForm { public EphListForm() { InitializeComponent(); txtStartTime.UseTimeEdit(); txtEndTime.UseTimeEdit(); txtEphType.Properties.AddEnum(); _ephManager = EphManager.Default; } Session _session; XPServerCollectionSource _ephListSource; EphManager _ephManager; List _satList; private void EphListForm_Load(object sender, EventArgs e) { Reload(); BindSatList(); } private void Reload() { _session = new Session(); _ephListSource = new XPServerCollectionSource(_session, typeof(Eph)); _ephListSource.DefaultSorting = $"{nameof(Eph.StartTime)} desc,{nameof(Eph.SatNum)} asc"; _ephListSource.FixedFilterCriteria = CreateFilter(); grdEphList.DataSource = _ephListSource; } private void BindSatList() { _satList = _session.Query().Where(m => m.Enable).OrderBy(m => m.SatNum).ToList(); txtSatNum.Properties.Items.AddRange(_satList); } private void _ephListSource_ResolveSession(object sender, ResolveSessionEventArgs e) { e.Session = _session; } private void _ephListSource_DismissSession(object sender, ResolveSessionEventArgs e) { IDisposable session = e.Session as IDisposable; if (session != null) { session.Dispose(); } } private void btnImport_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { EphImportForm importForm = new EphImportForm(); if (importForm.ShowDialog() == DialogResult.OK) { Reload(); } } private void btnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var ephIds = gvEphList.GetSelectRowCellValue(colId); if (ephIds.Length == 0) return; if (MsgHelper.ShowConfirm("确定删除选中的记录吗?")) { _ephManager.DeleteEph(ephIds); Reload(); } } private void btnCalc_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { EphCalcForm calcForm = new EphCalcForm(); calcForm.ShowDialog(); } private void gvEphList_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { popMenu.ShowPopup(Cursor.Position); } } private void btnQuery_Click(object sender, EventArgs e) { Reload(); } private CriteriaOperator CreateFilter() { List filterList = new List(); int satNum = 0; if (txtSatNum.EditValue is Sat sat) { satNum = sat.SatNum; } else if (int.TryParse(txtSatNum.Text.Trim(), out int satNumVal)) { satNum = satNumVal; } if (satNum > 0) { filterList.Add(CriteriaOperator.FromLambda(m => m.SatNum == satNum)); } if (txtEphType.EditValue != null) { var ephType = (EphType)txtEphType.EditValue; filterList.Add(CriteriaOperator.FromLambda(m => m.EphType == ephType)); } if (txtStartTime.DateTime != DateTime.MinValue) { filterList.Add(CriteriaOperator.FromLambda(m => m.StartTime >= txtStartTime.DateTime)); } if (txtEndTime.DateTime != DateTime.MinValue) { filterList.Add(CriteriaOperator.FromLambda(m => m.StartTime <= txtEndTime.DateTime)); } return CriteriaOperator.And(filterList); } } }