GXGJStatistics.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using SuperMap.Data;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. using WeifenLuo.WinFormsUI.Docking;
  12. using WWPipeLine.MapBasic.Conditions;
  13. using WWPipeLine.MapBasic;
  14. namespace WWPipeLine.MapTools.Conditions.Statistics
  15. {
  16. public partial class GXGJStatistics : ConditionPanel
  17. {
  18. public GXGJStatistics() : base()
  19. {
  20. this.ConditionPanelName = "按管线的管径统计";
  21. this.SetSize(200, 400);
  22. InitializeComponent();
  23. }
  24. protected override void OnLoad(EventArgs e)
  25. {
  26. if (!ComsStatic.HasField(ComsStatic.gsGuanXian, "gj"))
  27. {
  28. Sunny.UI.UIMessageTip.ShowError("当前矢量数据集没有管径信息"); return;
  29. }
  30. ComsStatic.BindDataTableOnCheckedListBox(ComsStatic.gsGuanXian, clb, "gj");
  31. }
  32. public override object Do(DockPanel dockPanel = null)
  33. {
  34. List<string> gxList = new List<string>();
  35. foreach (string str in clb.CheckedItems)
  36. {
  37. gxList.Add(str);
  38. }
  39. DataTable dtFinal = new DataTable();
  40. dtFinal.Columns.Add("管径");
  41. foreach (string gx in gxList.ToArray())
  42. {
  43. dtFinal.Columns.Add(gx);
  44. }
  45. DataRow drcd = dtFinal.NewRow(); drcd["管径"] = "长度";
  46. DataRow drsl = dtFinal.NewRow(); drsl["管径"] = "数量";
  47. Recordset rd = null;
  48. foreach (string gx in gxList.ToArray())
  49. {
  50. if (gx == "未知")
  51. rd = ComsStatic.QueryRecordset(ComsStatic.gsGuanXian, " gj is null");
  52. else
  53. rd = ComsStatic.QueryRecordset(ComsStatic.gsGuanXian, string.Format(" gj='{0}'", gx));
  54. drcd[gx] = Math.Round(rd.Statistic("cd", StatisticMode.Sum), 2);
  55. drsl[gx] = rd.RecordCount;
  56. }
  57. dtFinal.Rows.Add(drcd); dtFinal.Rows.Add(drsl);
  58. ComsStatic.RecordsetDispose(rd);
  59. return dtFinal;
  60. }
  61. }
  62. }