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));
}
}
}
}