using SuperMap.Data; using System; using System.Collections.Generic; using System.Data; using WeifenLuo.WinFormsUI.Docking; using WWPipeLine.MapBasic.Conditions; using WWPipeLine.MapBasic; namespace WWPipeLine.MapTools.Conditions.Statistics { public partial class GXCZStatistics : ConditionPanel { public GXCZStatistics() : base() { this.ConditionPanelName = "按管线的材质统计"; this.SetSize(200, 400); InitializeComponent(); } protected override void OnLoad(EventArgs e) { if (!ComsStatic.HasField(ComsStatic.gsGuanXian, "cz")) { Sunny.UI.UIMessageTip.ShowError("当前矢量数据集没有管径信息"); return; } ComsStatic.BindDataTableOnCheckedListBox(ComsStatic.gsGuanXian, clb, "cz"); } public override object Do(DockPanel dockPanel = null) { List gxList = new List(); foreach (string str in clb.CheckedItems) { gxList.Add(str); } DataTable dtFinal = new DataTable(); dtFinal.Columns.Add("材质"); foreach (string gx in gxList.ToArray()) { dtFinal.Columns.Add(gx); } DataRow drcd = dtFinal.NewRow(); drcd["材质"] = "长度"; DataRow drsl = dtFinal.NewRow(); drsl["材质"] = "数量"; Recordset rd = null; foreach (string gx in gxList.ToArray()) { if (gx == "未知") rd = ComsStatic.QueryRecordset(ComsStatic.gsGuanXian, " cz is null"); else rd = ComsStatic.QueryRecordset(ComsStatic.gsGuanXian, string.Format(" cz='{0}'", gx)); drcd[gx] = Math.Round(rd.Statistic("cd", StatisticMode.Sum), 2); drsl[gx] = rd.RecordCount; } ComsStatic.RecordsetDispose(rd); dtFinal.Rows.Add(drcd); dtFinal.Rows.Add(drsl); return dtFinal; } } }