PesGridListCtrl.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. using DevExpress.Data;
  2. using DevExpress.Mvvm;
  3. using DevExpress.Xpo;
  4. using DevExpress.XtraBars;
  5. using DevExpress.XtraEditors;
  6. using DevExpress.XtraGrid.Views.Base;
  7. using Ips.Library.Basic;
  8. using Ips.Library.DxpLib;
  9. using Ips.Library.Entity;
  10. using Ips.LocAlgorithm;
  11. using Ips.Sps.TskResults.Commands;
  12. using System;
  13. using System.Collections.Generic;
  14. using System.ComponentModel;
  15. using System.Data;
  16. using System.Drawing;
  17. using System.Linq;
  18. using System.Text;
  19. using System.Threading.Tasks;
  20. using System.Windows.Forms;
  21. namespace Ips.Sps.TskResults.Peses
  22. {
  23. public partial class PesGridListCtrl : DevExpress.XtraEditors.XtraUserControl
  24. {
  25. public PesGridListCtrl()
  26. {
  27. InitializeComponent();
  28. }
  29. public void SetResourceList(XPCollection satList, XPCollection emtList)
  30. {
  31. bsSatList.DataSource = satList;
  32. bsEmtList.DataSource = emtList;
  33. }
  34. public void SetDataSource(object obj)
  35. {
  36. if (obj is System.Collections.IList)
  37. {
  38. bsPesList.DataSource = obj;
  39. }
  40. else
  41. {
  42. grdPesList.DataSource = obj;
  43. }
  44. grdPesList.RefreshDataSource();
  45. gvPesList.BestFitColumns();
  46. }
  47. private void gvPesList_CustomColumnDisplayText(object sender, CustomColumnDisplayTextEventArgs e)
  48. {
  49. if (e.Value == null || e.Value == NotLoadedObject.Instance) return;
  50. if (e.Column == colSigFreq)
  51. {
  52. e.DisplayText = ((long)e.Value).E6m().ToString("F3");
  53. }
  54. else if (e.Column == colBandWidth)
  55. {
  56. e.DisplayText = ((int)e.Value).E3m().ToString();
  57. }
  58. else if (e.Column == colEmtId)
  59. {
  60. if (Convert.ToInt32(e.Value) == 0)
  61. {
  62. e.DisplayText = "未知";
  63. }
  64. }
  65. else if (e.Column == colMainSatId)
  66. {
  67. if (Convert.ToInt32(e.Value) == 0)
  68. {
  69. e.DisplayText = "无";
  70. }
  71. }
  72. }
  73. private void gvPesList_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
  74. {
  75. if (e.Button == MouseButtons.Right)
  76. {
  77. var category = (SignalCategory)gvPesList.GetFocusedRowCellValue(colCategory);
  78. btnDrawDtoLine.Visibility = category == SignalCategory.RefSig ? BarItemVisibility.Never : BarItemVisibility.Always;
  79. btnDfLine.Visibility = category == SignalCategory.RefSig ? BarItemVisibility.Never : BarItemVisibility.Always;
  80. popMenu.ShowPopup(grdPesList.PointToScreen(e.Location));
  81. }
  82. }
  83. private void btnDrawDtoLine_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
  84. {
  85. DrawLine(e.Item == btnDrawDtoLine, false);
  86. }
  87. private void btnDfLine_ItemClick(object sender, ItemClickEventArgs e)
  88. {
  89. DrawLine(e.Item == btnDfLine, true);
  90. }
  91. private void DrawLine(bool hasRef, bool dfoLine)
  92. {
  93. try
  94. {
  95. MsgHelper.ShowOverlay(this);
  96. var pesId = (long)gvPesList.GetFocusedRowCellValue(colId);
  97. var cmd = DrawLineMessage.CreateByPes(pesId, hasRef, dfoLine);
  98. Messenger.Default.Send(cmd);
  99. MsgHelper.CloseOverlay();
  100. }
  101. catch (Exception ex)
  102. {
  103. MsgHelper.CloseOverlay();
  104. MsgHelper.ShowError("绘制时差线异常,错误消息:" + ex.Message);
  105. }
  106. }
  107. private async void btnPosManual_ItemClick(object sender, ItemClickEventArgs e)
  108. {
  109. var pesIds = gvPesList.GetSelectRowCellValue<long>(colId);
  110. var pesList = Session.DefaultSession.Query<Pes>().Where(m => pesIds.Contains(m.Id)).ToList();
  111. var pes1 = pesList[0];
  112. var pes2 = pesList[1];
  113. var posRes = await LocUtil.X3(
  114. pes1.Dt,
  115. pes2.Dt,
  116. pes1.GetMainAntLLA(),
  117. pes1.GetAdjaAntLLA(),
  118. pes2.GetMainAntLLA(),
  119. pes2.GetAdjaAntLLA(),
  120. pes1.GetMainEphXYZ(),
  121. pes1.GetAdjaEphXYZ(),
  122. pes2.GetMainEphXYZ(),
  123. pes2.GetAdjaEphXYZ()
  124. );
  125. var ss = posRes.Result;
  126. //LocUtil.X3()
  127. }
  128. private void gvPesList_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)
  129. {
  130. }
  131. private void gvPesList_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
  132. {
  133. if (e.Column != colSnr || e.RowHandle < 0 || e.CellValue == NotLoadedObject.Instance) return;
  134. bool isValid = (bool)gvPesList.GetRowCellValue(e.RowHandle, colIsValid);
  135. if (!isValid)
  136. {
  137. e.Appearance.BackColor = Color.LightGray;
  138. }
  139. }
  140. private void btnExportCsv_ItemClick(object sender, ItemClickEventArgs e)
  141. {
  142. string filename = ToolDialog.SaveFile($"参估列表{DateTime.Now:yyyyMMddHHmmss}.csv", "导出参估列表", null, "csv文件(*.csv)|*.csv");
  143. if (filename.IsNotNullOrWhitespace())
  144. {
  145. gvPesList.ExportToCsv(filename);
  146. }
  147. }
  148. }
  149. }