GXCZStatistics.cs 2.1 KB

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