소스 검색

分页控件完美无瑕

zoule 4 달 전
부모
커밋
c28e3344f1

+ 8 - 7
DW5S.App/ExtensionsDev/GridControlEx.cs

@@ -10,6 +10,7 @@ using DevExpress.XtraGrid;
 using DevExpress.XtraGrid.Columns;
 using DevExpress.XtraGrid.Views.Grid;
 using DevExpress.XtraRichEdit.Model;
+using DW5S.Entity;
 using DxHelper;
 using ExtensionsDev;
 using System;
@@ -47,17 +48,17 @@ public static class GridControlEx
     public static GridControl UseDefault<T>(this GridControl grid, List<T> dataSource, int rowHeight = 24, bool showScrollH = false, bool formatNullValue = true)
     {
         grid.DataSource = dataSource;
+        var view = grid.MainView as GridView;
         grid.Load += (sender, e) =>
         {
-            grid.HideColumn("UpdateTime");
-            grid.HideColumn(p => p.FieldName.ToUpper().EndsWith("ID"));
+            view.Columns["Id"].VisibleIndex = 0;
+            grid.HideColumn("UpdateTime", "CreateTime");
             grid.HideColumn(p => p.ColumnType == typeof(List<>));
             grid.HideColumn(p => p.ColumnType == typeof(ICollection<>));
-            grid.HideColumn(p => p.ColumnType.BaseType != null && p.ColumnType.BaseType.Name.Contains("BaseEntity"));
+            //grid.HideColumn(p => p.ColumnType.BaseType != null && p.ColumnType.BaseType.Name.Contains("BaseEntity"));
         };
 
         grid.MainView.BorderStyle = BorderStyles.Flat;
-        var view = grid.MainView as GridView;
         SetViewDefaultProps(grid, view, rowHeight, showScrollH);
         var childView = grid.GetChildView();
         if (childView != null)
@@ -738,15 +739,15 @@ public static class GridControlEx
     /// <param name="menuCaption"></param>
     /// <param name="action"></param>
     /// <returns></returns>
-    public static GridControl UseClearAsync<T>(this GridControl grid, Func<List<T>, Task<bool>> action = null, string menuCaption = "清除")
+    public static GridControl UseClearAsync<T>(this GridControl grid, Func<Task<bool>> action = null, string menuCaption = "清除")
     {
         grid.AddContentMenu<T>(menuCaption, DxHelper.SvgHelper.CreateClear(), async data =>
         {
             if (data == null || data.Count == 0) return;
-            if (!DxHelper.MsgBoxHelper.ShowConfirm($"确认清空所有记录?共[{data.Count}]条")) return;
+            if (!DxHelper.MsgBoxHelper.ShowConfirm($"确认清空所有记录?")) return;
             if (action != null)
             {
-                bool succeed = await action(data);
+                bool succeed = await action();
                 if (!succeed) return;
             }
             var view = grid.MainView as GridView;

+ 1 - 1
DW5S.App/ExtensionsDev/LayoutControlExtension.cs

@@ -72,7 +72,7 @@ namespace ExtensionsDev
                 {
                     if (Debugger.IsAttached)
                     {
-                        File.Delete($"Layout\\{name}.xml");
+                        //File.Delete($"Layout\\{name}.xml");
                     }
                     else
                     {

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 442 - 454
DW5S.App/UserControl/CtrlHome.Designer.cs


+ 142 - 132
DW5S.App/UserControl/CtrlHome.cs

@@ -48,6 +48,7 @@ namespace DW5S.App.UserControl
 
         private async void CtrlHome_Load(object sender, EventArgs e)
         {
+            this.ctrlPage1.SetOnQuery(LoadPageData);
             gridView2.ColumnFilterChanged += GridView2_ColumnFilterChanged;
             Messenger.Defalut.Sub<ModelPosRes>("新增定位点", OnPosAdd);
             Messenger.Defalut.Sub<SysSetings>("地图类型改变", OnSysSetingsChanged);
@@ -130,12 +131,9 @@ namespace DW5S.App.UserControl
             {
 
                 var repsTask = unitOfWork.Of<TaskInfo>();
-                await repsTask.UpdatePropAsync(p =>p.TaskState==EnumTaskState.Running, s => s.SetProperty(b => b.TaskState, EnumTaskState.Stopped));
+                await repsTask.UpdatePropAsync(p => p.TaskState == EnumTaskState.Running, s => s.SetProperty(b => b.TaskState, EnumTaskState.Stopped));
                 await unitOfWork.SaveAsync();
 
-                var items = await repsTask.GetAllAsync(p => p.UpdateTime, false);
-                list.AddRange(items.To<List<TaskViewModel>>());
-
                 mapControl1.AddRectMenu<ModelPosRes>("删除定位点", SvgHelper.CreateClose(), async items => await DeletePosRes(items.ToList()))
                 .AddRectMenu<ModelPosRes>("使用镜像点", SvgHelper.CreateUseMirr(), async items => await UseMirr(items.ToList()))
                 .AddRectMenu<ModelPosRes>("编辑目标", SvgHelper.CreateEdit(), async items => await EditTarget(items.ToList()))
@@ -237,6 +235,18 @@ namespace DW5S.App.UserControl
            });
         }
 
+        private async Task<PageData> LoadPageData(PageQueryDto arg)
+        {
+            var repsTask = IocContainer.UnitOfWork.Of<TaskInfo>();
+            var queryable = repsTask.AsQueryable();
+            queryable = queryable.OrderByDescending(p => p.CreateTime);
+            var pageData = await repsTask.GetPageData(arg, queryable);
+            list.Clear();
+            list.AddRange(pageData.Data.To<List<TaskViewModel>>());
+            gridView1.RefreshData();
+            return pageData;
+        }
+
         private void GridView2_ColumnFilterChanged(object sender, EventArgs e)
         {
             try
@@ -304,7 +314,7 @@ namespace DW5S.App.UserControl
             mapControl1.DelFixedImg("Tx");
             tsk = (e.Row as TaskViewModel);
             if (tsk == null) return;
-            if (tsk.PosType == EnumPosType.X1D1CX )
+            if (tsk.PosType == EnumPosType.X1D1CX)
             {
                 gridView2.Columns[nameof(ModelPosRes.CxResID)].Visible = true;
             }
@@ -496,7 +506,7 @@ namespace DW5S.App.UserControl
                     var unitOfWork = IocContainer.UnitOfWork;
                     var repsTaskSig = unitOfWork.Of<TaskSig>();
                     var sigs = await repsTaskSig.AsQueryable().Include(p => p.SigInfo).Where(p => p.TaskInfoID == editItem.Id).Select(p => p.SigInfo).ToListAsync();
-                    
+
                     TaskEditor frm = new TaskEditor(editItem, sigs.To<List<SigViewModel>>());
                     if (frm.ShowDialog() != DialogResult.OK) return;
                     editItem = frm.info;
@@ -519,7 +529,7 @@ namespace DW5S.App.UserControl
                         find.Adja1Sat = null;
                         find.Adja2Sat = null;
                     }
-                    else if (find.PosType == EnumPosType.X2D1 || find.PosType == EnumPosType.X2D1NoRef )
+                    else if (find.PosType == EnumPosType.X2D1 || find.PosType == EnumPosType.X2D1NoRef)
                     {
                         find.Adja1Sat = editItem.Adja1Sat;
                         find.Adja2Sat = null;
@@ -591,115 +601,115 @@ namespace DW5S.App.UserControl
             {
                 try
                 {
-                   
-                        TxInfo tx;
-                        TxInfo cdb;
-                        List<TaskSigDto> tskSigsDto = new List<TaskSigDto>();
-                        var dbSigs = await repsTaskSig.AsQueryable().Include(p => p.SigInfo).Where(p => p.TaskInfoID == tsk.Id).ToListAsync();
-                        if (!dbSigs.Any())
+
+                    TxInfo tx;
+                    TxInfo cdb;
+                    List<TaskSigDto> tskSigsDto = new List<TaskSigDto>();
+                    var dbSigs = await repsTaskSig.AsQueryable().Include(p => p.SigInfo).Where(p => p.TaskInfoID == tsk.Id).ToListAsync();
+                    if (!dbSigs.Any())
+                    {
+                        DxHelper.MsgBoxHelper.ShowWarning($"请添加任务信号");
+                        return;
+                    }
+                    foreach (var taskSig in dbSigs)
+                    {
+                        TaskSigDto sigDto = new TaskSigDto()
                         {
-                            DxHelper.MsgBoxHelper.ShowWarning($"请添加任务信号");
+                            FreqDown = taskSig.SigInfo.FreqDown,
+                            FreqUp = taskSig.SigInfo.FreqUp,
+                            SigType = (EnumSigCheckTypeDto)taskSig.SigInfo.SigType,
+                            Snr = taskSig.SigInfo.Snr,
+                            TaskInfoID = taskSig.TaskInfoID,
+                        };
+                        if (taskSig.SigInfo.Band > 0)
+                            sigDto.BandHz = taskSig.SigInfo.Band;
+                        else
+                            sigDto.BandHz = 25000;
+                        var repsSigDelay = unitOfWork.Of<SigDelay>();
+                        var sigDelay = await repsSigDelay.FindAsync(p => p.SigInfoId == taskSig.SigInfo.Id);
+                        sigDto.SigDelay.AddRange(sigDelay.To<List<SigDelayDto>>());
+                        tskSigsDto.Add(sigDto);
+                    }
+
+                    var repsTx = unitOfWork.Of<TxInfo>();
+                    tx = await repsTx.FirstOrDefaultAsync(p => p.TxType == EnumTxType.Rec);
+                    cdb = await repsTx.FirstOrDefaultAsync(p => p.TxType == EnumTxType.Cdb);
+                    if (tx == null || cdb == null)
+                    {
+                        DxHelper.MsgBoxHelper.ShowWarning($"未配置天线信息");
+                        return;
+                    }
+                    var repsFixed = unitOfWork.Of<FixedStation>();
+                    var fixedStations = await repsFixed.FindAsync(p => p.Enable);
+                    if (tsk.PosType == EnumPosType.X2D1)
+                    {
+                        //下发任务
+                        var svtItem = ServerContext.Instance.GetRandomOne(EnumSvrType.X2D1NoRefTask);
+                        if (svtItem == null)
+                        {
+                            DxHelper.MsgBoxHelper.ShowWarning($"未找到注册的两星一地处理服务");
                             return;
                         }
-                        foreach (var taskSig in dbSigs)
+                        X2D1TaskHandleDto dto = new X2D1TaskHandleDto()
+                        {
+                            MainSatCode = tsk.MainSat,
+                            TaskType = (EnumTaskTypeDto)((int)tsk.TaskType),
+                            AdjaSatCode = tsk.Adja1Sat.Value,
+                            ID = tsk.Id,
+                            TaskName = tsk.TaskName,
+                            CapDir = "",
+                            CapLon = tx.Lon,
+                            CapLat = tx.Lat,
+                            CdbLon = cdb.Lon,
+                            CdbLat = cdb.Lat,
+                            DateDirFormat = "",
+                            Sigs = tskSigsDto,
+                            ForTest = AppConfigHelper.Get("ForTest", false)
+                        };
+                        var fixedStation = fixedStations.FirstOrDefault(p => dto.Sigs.Any(t => t.FreqUp == p.FreqUpHz));
+                        if (fixedStation != null)
                         {
-                            TaskSigDto sigDto = new TaskSigDto()
+                            dto.FixedStationDto = new X2D1FixedStationDto()
                             {
-                                FreqDown = taskSig.SigInfo.FreqDown,
-                                FreqUp = taskSig.SigInfo.FreqUp,
-                                SigType = (EnumSigCheckTypeDto)taskSig.SigInfo.SigType,
-                                Snr = taskSig.SigInfo.Snr,
-                                TaskInfoID = taskSig.TaskInfoID,
+                                FixedStationId = fixedStation.Id,
+                                FreqUp = fixedStation.FreqUpHz,
+                                Lon = fixedStation.Lon,
+                                Lat = fixedStation.Lat,
+                                StationName = fixedStation.StationName,
+                                Value = fixedStation.Value,
                             };
-                            if ( taskSig.SigInfo.Band > 0)
-                                sigDto.BandHz = taskSig.SigInfo.Band;
-                            else
-                                sigDto.BandHz = 25000;
-                            var repsSigDelay = unitOfWork.Of<SigDelay>();
-                            var sigDelay = await repsSigDelay.FindAsync(p => p.SigInfoId == taskSig.SigInfo.Id);
-                            sigDto.SigDelay.AddRange(sigDelay.To<List<SigDelayDto>>());
-                            tskSigsDto.Add(sigDto);
                         }
-
-                        var repsTx = unitOfWork.Of<TxInfo>();
-                        tx = await repsTx.FirstOrDefaultAsync(p => p.TxType == EnumTxType.Rec);
-                        cdb = await repsTx.FirstOrDefaultAsync(p => p.TxType == EnumTxType.Cdb);
-                        if (tx == null || cdb == null)
+                        if (tsk.TaskType == EnumTaskType.History)
                         {
-                            DxHelper.MsgBoxHelper.ShowWarning($"未配置天线信息");
-                            return;
+                            TaskHistoryTimeEditor frm = new TaskHistoryTimeEditor(tsk);
+                            if (frm.ShowDialog() != DialogResult.OK) return;
+                            var startTime = frm.start;
+                            var endTime = frm.end;
+                            dto.StartTime = startTime;
+                            dto.EndTime = endTime;
                         }
-                        var repsFixed = unitOfWork.Of<FixedStation>();
-                        var fixedStations = await repsFixed.FindAsync(p => p.Enable);
-                        if (tsk.PosType == EnumPosType.X2D1)
+                        var res = await HttpHelper.PostRequestAsync<AjaxResult>(svtItem.BaseHttpAddr + "X2D1TaskProcessing/Run", dto);
+                        if (res.code != 200)
                         {
-                            //下发任务
-                            var svtItem = ServerContext.Instance.GetRandomOne(EnumSvrType.X2D1NoRefTask);
-                            if (svtItem == null)
-                            {
-                                DxHelper.MsgBoxHelper.ShowWarning($"未找到注册的两星一地处理服务");
-                                return;
-                            }
-                            X2D1TaskHandleDto dto = new X2D1TaskHandleDto()
-                            {
-                                MainSatCode = tsk.MainSat,
-                                TaskType = (EnumTaskTypeDto)((int)tsk.TaskType),
-                                AdjaSatCode = tsk.Adja1Sat.Value,
-                                ID = tsk.Id,
-                                TaskName = tsk.TaskName,
-                                CapDir ="",
-                                CapLon = tx.Lon,
-                                CapLat = tx.Lat,
-                                CdbLon = cdb.Lon,
-                                CdbLat = cdb.Lat,
-                                DateDirFormat ="",
-                                Sigs = tskSigsDto,
-                                ForTest = AppConfigHelper.Get("ForTest", false)
-                            };
-                            var fixedStation = fixedStations.FirstOrDefault(p => dto.Sigs.Any(t => t.FreqUp == p.FreqUpHz));
-                            if (fixedStation != null)
-                            {
-                                dto.FixedStationDto = new X2D1FixedStationDto()
-                                {
-                                    FixedStationId = fixedStation.Id,
-                                    FreqUp = fixedStation.FreqUpHz,
-                                    Lon = fixedStation.Lon,
-                                    Lat = fixedStation.Lat,
-                                    StationName = fixedStation.StationName,
-                                    Value = fixedStation.Value,
-                                };
-                            }
-                            if (tsk.TaskType == EnumTaskType.History)
-                            {
-                                TaskHistoryTimeEditor frm = new TaskHistoryTimeEditor(tsk);
-                                if (frm.ShowDialog() != DialogResult.OK) return;
-                                var startTime = frm.start;
-                                var endTime = frm.end;
-                                dto.StartTime = startTime;
-                                dto.EndTime = endTime;
-                            }
-                            var res = await HttpHelper.PostRequestAsync<AjaxResult>(svtItem.BaseHttpAddr + "X2D1TaskProcessing/Run", dto);
-                            if (res.code != 200)
-                            {
-                                IocContainer.Logger.Error(res.msg);
-                                DxHelper.MsgBoxHelper.ShowError($"{res.msg}");
-                                return;
-                            }
-                            if (fixedStation != null)//有固定站
-                            {
-                                var cts = new CancellationTokenSource();
-                                PosWithRefFind refFind = new PosWithRefFind();
-                                refFind.Start(dto.ID, cts.Token);
-                                dicCts[dto.ID] = cts;
-                            }
-
+                            IocContainer.Logger.Error(res.msg);
+                            DxHelper.MsgBoxHelper.ShowError($"{res.msg}");
+                            return;
                         }
-                        else
+                        if (fixedStation != null)//有固定站
                         {
-                            DxHelper.MsgBoxHelper.ShowError($"暂不支持{tsk.PosType.GetEnumDisplayName()}类型的任务");
-                            return;
+                            var cts = new CancellationTokenSource();
+                            PosWithRefFind refFind = new PosWithRefFind();
+                            refFind.Start(dto.ID, cts.Token);
+                            dicCts[dto.ID] = cts;
                         }
-                    
+
+                    }
+                    else
+                    {
+                        DxHelper.MsgBoxHelper.ShowError($"暂不支持{tsk.PosType.GetEnumDisplayName()}类型的任务");
+                        return;
+                    }
+
                     var item = await repsTask.FirstOrDefaultAsync(p => p.Id == tsk.Id);
                     item.TaskState = EnumTaskState.Running;
                     await repsTask.AddOrUpdateAsync(item);
@@ -725,37 +735,37 @@ namespace DW5S.App.UserControl
                     await unitOfWork.SaveAsync();
                     tsk.TaskState = EnumTaskState.Stopped;
                     string url = "";
-                   
-                        ModelSvr svtItem = null;
-                        if (tsk.PosType == EnumPosType.X2D1)
-                        {
-                            svtItem = ServerContext.Instance.GetRandomOne(EnumSvrType.X2D1NoRefTask).To<ModelSvr>();
-                            url = "X2D1TaskProcessing";
-                        }
-                        if (svtItem == null)
-                        {
-                            //DxHelper.MsgBoxHelper.ShowWarning($"未找到注册的处理服务");
-                            return;
-                        }
-                        TaskStopHandleDto dto = new TaskStopHandleDto();
-                        dto.TaskType = (EnumTaskTypeDto)((int)tsk.TaskType);
-                        dto.ID = tsk.Id;
-                        var res = await HttpHelper.PostRequestAsync<AjaxResult>(svtItem.BaseHttpAddr + $"{url}/Stop", dto);
-                        if (res.code != 200)
-                        {
-                            IocContainer.Logger.Error(res.msg);
-                            DxHelper.MsgBoxHelper.ShowError(res.msg);
-                        }
 
-                        //停止查找参考信号
-                        if (dicCts.ContainsKey(dto.ID))
-                        {
-                            dicCts[dto.ID]?.Cancel();
-                            dicCts.Remove(dto.ID);
-                        }
+                    ModelSvr svtItem = null;
+                    if (tsk.PosType == EnumPosType.X2D1)
+                    {
+                        svtItem = ServerContext.Instance.GetRandomOne(EnumSvrType.X2D1NoRefTask).To<ModelSvr>();
+                        url = "X2D1TaskProcessing";
+                    }
+                    if (svtItem == null)
+                    {
+                        //DxHelper.MsgBoxHelper.ShowWarning($"未找到注册的处理服务");
+                        return;
+                    }
+                    TaskStopHandleDto dto = new TaskStopHandleDto();
+                    dto.TaskType = (EnumTaskTypeDto)((int)tsk.TaskType);
+                    dto.ID = tsk.Id;
+                    var res = await HttpHelper.PostRequestAsync<AjaxResult>(svtItem.BaseHttpAddr + $"{url}/Stop", dto);
+                    if (res.code != 200)
+                    {
+                        IocContainer.Logger.Error(res.msg);
+                        DxHelper.MsgBoxHelper.ShowError(res.msg);
+                    }
+
+                    //停止查找参考信号
+                    if (dicCts.ContainsKey(dto.ID))
+                    {
+                        dicCts[dto.ID]?.Cancel();
+                        dicCts.Remove(dto.ID);
+                    }
+
 
 
-                    
                     IocContainer.Logger.Warning($"用户停止了任务,ID={tsk.Id}");
                 }
                 catch (Exception ex)
@@ -979,7 +989,7 @@ namespace DW5S.App.UserControl
                         x2D1GdopParam.mapControl1 = mapControl1;
                         DxHelper.PopupHelper.ShowPopup(x2D1GdopParam, layoutControl1, 600);
                         break;
-                   
+
                     default:
                         break;
                 }

+ 30 - 30
DW5S.App/UserControl/CtrlHome.resx

@@ -1,24 +1,24 @@
 <?xml version="1.0" encoding="utf-8"?>
 <root>
-  <!-- 
+  <!--
     Microsoft ResX Schema 
-    
+
     Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
     associated with the data types.
-    
+
     Example:
-    
+
     ... ado.net/XML headers & schema ...
     <resheader name="resmimetype">text/microsoft-resx</resheader>
     <resheader name="version">2.0</resheader>
     <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
     <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
     <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing"">Blue</data>
     <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
         <value>[base64 mime encoded serialized .NET Framework object]</value>
     </data>
@@ -26,36 +26,36 @@
         <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
         <comment>This is a comment</comment>
     </data>
-                
-    There are any number of "resheader" rows that contain simple 
+
+    There are any number of "resheader" rows that contain simple
     name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
     mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
     extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
     read any of the formats listed below.
-    
+
     mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
+    value   : The object must be serialized with
             : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
             : and then encoded with base64 encoding.
     
     mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
+    value   : The object must be serialized with
             : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
             : and then encoded with base64 encoding.
 
     mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
+    value   : The object must be serialized into a byte array
             : using a System.ComponentModel.TypeConverter
             : and then encoded with base64 encoding.
     -->
@@ -120,7 +120,7 @@
   <metadata name="barManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>552, 17</value>
   </metadata>
-  <assembly alias="DevExpress.Data.v23.2" name="DevExpress.Data.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
+  <assembly alias="DevExpress.Data.v23.2" name="DevExpress.Data.v23.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
   <data name="btnStart.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi4z
@@ -161,7 +161,7 @@
 </value>
   </data>
   <metadata name="toolTipController1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>391, 17</value>
+    <value>392, 17</value>
   </metadata>
   <data name="buttonImageOptions1.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
@@ -221,7 +221,7 @@
 </value>
   </data>
   <metadata name="svgImageCollection1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>215, 17</value>
+    <value>217, 17</value>
   </metadata>
   <data name="svgImageCollection1.CircleFill.svg" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
@@ -239,7 +239,7 @@
 </value>
   </data>
   <metadata name="popupMenu1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>687, 17</value>
+    <value>683, 17</value>
   </metadata>
   <metadata name="htmlTemplateCollection1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>

+ 1 - 1
DW5S.App/UserControl/CtrlPage.Designer.cs

@@ -130,7 +130,7 @@
             txtCountPerPage.Properties.AutoHeight = false;
             txtCountPerPage.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
             txtCountPerPage.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo) });
-            txtCountPerPage.Properties.Items.AddRange(new object[] { "100", "500", "1000", "2000", "5000", "10000" });
+            txtCountPerPage.Properties.Items.AddRange(new object[] { "100", "500", "1000", "2000", "5000" });
             txtCountPerPage.Size = new System.Drawing.Size(76, 20);
             txtCountPerPage.TabIndex = 0;
             txtCountPerPage.EditValueChanged += txtCountPerPage_EditValueChanged;

+ 10 - 3
DW5S.App/UserControl/CtrlPage.cs

@@ -18,7 +18,13 @@ namespace DW5S.App.UserControl
 
     public partial class CtrlPage : DevExpress.XtraEditors.XtraUserControl
     {
-        public event Func<PageQueryDto, Task<DTO.PageData>> OnQueryAsync;
+        private event Func<PageQueryDto, Task<DTO.PageData>> OnQueryAsync;
+
+        public void SetOnQuery(Func<PageQueryDto, Task<DTO.PageData>> onQueryAsync)
+        {
+            this.OnQueryAsync += onQueryAsync;
+            RefreshData();
+        }
 
         private bool comPact = false;
 
@@ -45,8 +51,8 @@ namespace DW5S.App.UserControl
                         if (item.GetType() == typeof(Button))
                             item.Width = 14;
                     }
-                    txtCountPerPage.Width = 50;
-                    txtGoPage.Width = 50;
+                    txtCountPerPage.Width = 60;
+                    txtGoPage.Width = 60;
                 }
                 else
                 {
@@ -112,6 +118,7 @@ namespace DW5S.App.UserControl
         {
             try
             {
+                if (OnQueryAsync == null) return;
                 if (sender == btnFirst)
                 {
                     this.CurrentPage = 1;

+ 10 - 9
DW5S.App/UserControl/CtrlXl.cs

@@ -48,7 +48,7 @@ namespace DW5S.App.UserControl
 
         private async void CtrlXl_Load(object sender, EventArgs e)
         {
-            ctrlPage1.OnQueryAsync += ctrlPage1_OnQueryAsync;
+            ctrlPage1.SetOnQuery(LoadPageData);
             var unitOfWork = IocContainer.UnitOfWork;
             var repsXl = unitOfWork.Of<XlInfo>() as XlRepository;
             var sat = await repsXl.GetAllSat();
@@ -73,10 +73,9 @@ namespace DW5S.App.UserControl
             //    currentPage = 1;
             //    ctrlPage1.RefreshData();
             //});
-            ctrlPage1.RefreshData();
         }
 
-        private async Task<PageData> ctrlPage1_OnQueryAsync(PageQueryDto arg)
+        private async Task<PageData> LoadPageData(PageQueryDto arg)
         {
             var repsXl = IocContainer.UnitOfWork.Of<XlInfo>();
             var queryable = repsXl.AsQueryable();
@@ -85,7 +84,7 @@ namespace DW5S.App.UserControl
             queryable = queryable.OrderByDescending(p => p.TimeUTC).ThenByDescending(p => p.Lon);
             var pageData = await repsXl.GetPageData(arg, queryable);
             list.Clear();
-            list.AddRange(dtResult);
+            list.AddRange(pageData.Data.To<List<XlViewModel>>());
             gridView1.RefreshData();
             return pageData;
         }
@@ -147,14 +146,15 @@ namespace DW5S.App.UserControl
                 this.Enabled = false;
                 var unitOfWork = IocContainer.UnitOfWork;
                 var repsXl = unitOfWork.Of<XlInfo>();
-                await repsXl.DeleteAsync(list.To<List<XlInfo>>());
+                var count = await repsXl.DeleteAsync(list.To<List<XlInfo>>());
                 await unitOfWork.SaveAsync();
                 ctrlPage1.RefreshData();
+                IocContainer.Logger.Information($"删除选中星历,共删除了{count}条星历记录");
                 return true;
             }
             catch (Exception ex)
             {
-                string msg = "删除选中星历异常";
+                string msg = "删除选中星历异常";
                 IocContainer.Logger.Error(ex, msg);
                 DxHelper.MsgBoxHelper.ShowError(msg);
                 return false;
@@ -164,21 +164,22 @@ namespace DW5S.App.UserControl
                 this.Enabled = true;
             }
         }
-        private async Task<bool> Clear(List<XlViewModel> list)
+        private async Task<bool> Clear()
         {
             try
             {
                 this.Enabled = false;
                 var unitOfWork = IocContainer.UnitOfWork;
                 var repsXl = unitOfWork.Of<XlInfo>();
-                await repsXl.DeleteAsync(list.To<List<XlInfo>>());
+                var count = await repsXl.DeleteAsync(p => true);
                 await unitOfWork.SaveAsync();
                 ctrlPage1.RefreshData();
+                IocContainer.Logger.Information($"删除所有星历,共删除了{count}条星历记录");
                 return true;
             }
             catch (Exception ex)
             {
-                string msg = "清空星历时异常";
+                string msg = "删除所有星历异常";
                 IocContainer.Logger.Error(ex, msg);
                 DxHelper.MsgBoxHelper.ShowError(msg);
                 return false;

+ 15 - 6
DW5S.Repostory/Repository/IRepository.cs

@@ -70,15 +70,24 @@ namespace DW5S.Repostory
         {
             return await dbSet.ToListAsync();
         }
-        public async Task<PageData<T>> GetPageData(PageQueryDto dto,IQueryable<T> queryable)
+        public async Task<PageData<T>> GetPageData(PageQueryDto dto, IQueryable<T> queryable)
         {
             if (dto.Page < 1) dto.Page = 1;
-            var count =await queryable.LongCountAsync();
-           
+            var count = await queryable.LongCountAsync();
+            if (count == 0)
+            {
+                return new PageData<T>()
+                {
+                    CountPerPage = dto.CountPerPage,
+                    Data = new List<T>(),
+                    Page = 1,
+                    TotalCount = 0,
+                };
+            }
             PageData<T> pageData = new PageData<T>()
             {
-                 CountPerPage=dto.CountPerPage,
-                 TotalCount=count,
+                CountPerPage = dto.CountPerPage,
+                TotalCount = count,
             };
             if (pageData.TotalPage < dto.Page)
             {
@@ -86,7 +95,7 @@ namespace DW5S.Repostory
             }
             int skip = dto.CountPerPage * (dto.Page - 1);
             queryable = queryable.Skip(skip).Take(dto.CountPerPage);
-            var data =await queryable.ToListAsync();
+            var data = await queryable.ToListAsync();
             pageData.Page = dto.Page;
             pageData.Data = data;
             return pageData;

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.