using DevExpress.Utils.Html; using DevExpress.XtraEditors; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.Entity; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Forms; using XdDw.App.EditForms; using XdDw.App.EFContext; using XzXdDw.App.Model; namespace XdDw.App.UserControl { public partial class CtrlSat : DevExpress.XtraEditors.XtraUserControl { List list = new List(); public CtrlSat() { InitializeComponent(); } private async void CtrlSat_Load(object sender, EventArgs e) { try { gridSat.Init().UseMultiSelect().UseFilter().UseRowNumber(); gridSat.DataSource = list; using (RHDWContext db = new RHDWContext()) { var res = db.SatInfos.OrderBy(p => p.SatName).OrderBy(p => p.SatName); list.AddRange(await res.ToListAsync()); } gridView1.RefreshData(); } catch (Exception ex) { Serilog.Log.Error("查询卫星信息失败", ex); XtraMessageBox.Show("查询卫星信息失败"); } } private void gridView1_PopupMenuShowing(object sender, DevExpress.XtraGrid.Views.Grid.PopupMenuShowingEventArgs e) { if (gridView1.GetSelectedRows().Any()) { btnDel.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; btnEdit.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; } else { btnDel.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; btnEdit.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; } popupMenu1.ShowPopup(MousePosition); } private async void btnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { try { SatEditor frm = new SatEditor(); if (frm.ShowDialog() != DialogResult.OK) return; var addItem = frm.info; using (RHDWContext db = new RHDWContext()) { db.SatInfos.Add(addItem); await db.SaveChangesAsync(); } list.Add(addItem); gridView1.RefreshData(); } catch (Exception ex) { Serilog.Log.Error("添加卫星信息失败",ex); XtraMessageBox.Show("添加卫星信息失败"); } } private async void btnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { try { var editItem = gridView1.GetFocusedRow() as SatInfo; SatEditor frm = new SatEditor(editItem); if (frm.ShowDialog() != DialogResult.OK) return; editItem = frm.info; using (RHDWContext db = new RHDWContext()) { var find = await db.SatInfos.Where(p => p.ID == editItem.ID).FirstOrDefaultAsync(); find.SatName = editItem.SatName; find.SatCode = editItem.SatCode; find.SatLon = editItem.SatLon; await db.SaveChangesAsync(); } gridView1.RefreshData(); } catch (Exception ex) { Serilog.Log.Error("保存卫星信息失败", ex); XtraMessageBox.Show("保存卫星信息失败"); } } private async void btnDel_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { try { var ids = gridView1.GetSelectedRows(); using (RHDWContext db = new RHDWContext()) { foreach (var id in ids) { var item = gridView1.GetRow(id) as SatInfo; var delItem = await db.SatInfos.Where(p => p.ID == item.ID).FirstOrDefaultAsync(); if (delItem != null) db.SatInfos.Remove(delItem); } await db.SaveChangesAsync(); } gridView1.DeleteSelectedRows(); } catch (Exception ex) { Serilog.Log.Error("删除卫星信息失败", ex); XtraMessageBox.Show("删除卫星信息失败"); } } private void gridView1_CustomDrawEmptyForeground(object sender, DevExpress.XtraGrid.Views.Base.CustomDrawEventArgs e) { if (gridView1.RowCount == 0) { string txt = "右键添加卫星"; var s = e.Appearance.CalcTextSize(e.Cache, txt, e.Bounds.Width).ToSize(); var x = (e.Bounds.Width - s.Width) / 2; var y = (e.Bounds.Height - s.Height) / 2; e.Appearance.ForeColor = Color.Gray; e.Appearance.DrawString(e.Cache, txt, new Rectangle(x, y, s.Width, s.Height)); } } } }