using DevExpress.Mvvm; using DevExpress.Xpo; using DevExpress.Xpo.DB; using DevExpress.XtraEditors; using Ips.Library.Basic; using Ips.Library.DxpLib; using Ips.Sps.Emts; using Ips.Sps.TskResults.Poses.Etos; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Ips.Sps.Emts { public partial class EmtListForm : DevExpress.XtraEditors.XtraForm { public EmtListForm() { InitializeComponent(); } public Session Session { get; private set; } private void EmtListForm_Load(object sender, EventArgs e) { Reload(); gvEmtList.BestFitColumns(); } private void Reload() { Session = new Session(); var emtList = new XPCollection(Session, null, new[] { new SortProperty(nameof(Emt.Enable),SortingDirection.Descending) }); bsEmtList.DataSource = emtList; } private void gvEmtList_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e) { if (e.Button == MouseButtons.Left) { if (e.Clicks == 2) { e.Handled = true; btnEdit.PerformClick(); } } else if (e.Button == MouseButtons.Right) { popupMenu.ShowPopup(Cursor.Position); } } private void ShowEditForm(int? id) { var form = new EmtEditForm(id); form.FormClosed += EditFormClosed; try { form.ShowDialog(); } finally { form.Dispose(); } } private void EditFormClosed(object sender, FormClosedEventArgs e) { var form = sender as EmtEditForm; form.FormClosed -= EditFormClosed; if (form.Id.HasValue) { Reload(); gvEmtList.FocusedRowHandle = gvEmtList.LocateByValue(nameof(Emt.Oid), form.Id); } } private void btnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { ShowEditForm(null); } private void btnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { int id = (int)gvEmtList.GetFocusedRowCellValue(colOid); ShowEditForm(id); } private void btnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var handles = gvEmtList.GetSelectedRows(); if (handles.Length == 0) return; if (MsgHelper.ShowConfirm("确定删除选中的记录吗?")) { var modelList = handles.Select(m => gvEmtList.GetRow(m) as Emt).ToList(); Session.Delete(modelList); Reload(); } } private void btnMarkToMap_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var emtList = gvEmtList.GetSelectRow(); foreach (var emt in emtList) { if (GeoUtil.IsValidPoint(emt.Lon, emt.Lat)) { Messenger.Default.Send(new AddMarkerEto() { Text = emt.Name, Lon = emt.Lon, Lat = emt.Lat }); } } } } }