CompositionDistributionGrid.cs 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754
  1. using DevExpress.Utils;
  2. using DevExpress.XtraCharts;
  3. using OTSCommon.DBOperate.Model;
  4. using OTSIncAReportApp;
  5. using OTSIncAReportApp._1_UI.Control_DEVCharts;
  6. using OTSIncAReportApp.DataOperation.DataAccess;
  7. using OTSIncAReportApp.OTSRstMgrFunction;
  8. using OTSIncAReportApp.OTSSampleReportInfo;
  9. using OTSIncAReportApp.SysMgrTools;
  10. using OTSIncAReportGraph.Class;
  11. using System;
  12. using System.Collections;
  13. using System.Collections.Generic;
  14. using System.Data;
  15. using System.Drawing;
  16. using System.Linq;
  17. using System.Windows.Forms;
  18. namespace OTSIncAReportGrids
  19. {
  20. /// <summary>
  21. /// 成分分布表 颗粒成份分布表
  22. /// </summary>
  23. public partial class CompositionDistributionGrid : UserControl
  24. {
  25. #region 设置变量
  26. //设置模拟数据表
  27. public DataTable m_dt = new DataTable();
  28. DataTable SelectParticlesListConvertToTable(List<Particle> selectParticles)
  29. {
  30. DataTable dataTable = new DataTable();
  31. return dataTable;
  32. }
  33. //国际化
  34. Language lan;
  35. Hashtable table;
  36. //测量结果
  37. ResultFile result = null;
  38. OTSIncAReportApp.OTSSampleReportInfo.ReportCondition source;
  39. OTSIncAReportApp.frmReportApp m_ReportApp;
  40. frmReportConditionChoose m_condition;
  41. //int gridheight = 0;
  42. List<int> list_gridheight = new List<int>();
  43. List<DataTable> list_table_data = new List<DataTable>();
  44. List<Point> list_table_size = new List<Point>();
  45. List<Point> list_table_Point = new List<Point>();
  46. List<string> list_fileName = new List<string>();
  47. int DataNumber = 0;//当前数据;
  48. List<ComboBox> list_ComboBox = new List<ComboBox>();
  49. List<ChartControl> list_ChartControl = new List<ChartControl>();
  50. int gridwidth = 0;
  51. int GridPosition = 0;
  52. int chartposition = 0;
  53. int indexGraphicType = 0;
  54. string GraphicType = "柱状图";
  55. #endregion
  56. #region 多数据源
  57. /// <summary>
  58. /// 绑定datagridview数据
  59. /// </summary>
  60. public void BindDataGridView(string path, int num, string filename)
  61. {
  62. List<int> FLID = new List<int>() { 0, 1, 2, 4, 6, 7, 8, 9 };
  63. List<string> NameList = new List<string>() { table["partcletype0"].ToString(), table["partcletype1"].ToString(), table["partcletype2"].ToString(), table["partcletype4"].ToString(), table["partcletype6"].ToString(), table["partcletype7"].ToString(), table["partcletype8"].ToString(), table["partcletype9"].ToString() };
  64. DataTable dt;
  65. OTSGridView gridView = new OTSGridView();
  66. OTSIncAReportApp.DataOperation.DataAccess.ParticleData particledata = new OTSIncAReportApp.DataOperation.DataAccess.ParticleData(path);
  67. string str1 = table["str1"].ToString();
  68. string str2 = table["str2"].ToString();
  69. string str3 = table["str3"].ToString();
  70. string str4 = table["str4"].ToString();
  71. string str5 = table["str5"].ToString();
  72. string str6 = table["str6"].ToString();
  73. string str7 = table["str7"].ToString();
  74. string str8 = table["str8"].ToString();
  75. string str9 = table["str9"].ToString();
  76. string str10 = table["str10"].ToString();
  77. string str11 = table["str11"].ToString();
  78. string str13 = table["str13"].ToString();
  79. //创建Grid的列序号
  80. gridView.Columns.Add("rowid", str1);
  81. //创建Grid的列颗粒名
  82. gridView.Columns.Add("TypeName", str8);
  83. //创建Grid的列代表色
  84. gridView.Columns.Add("TypeColor", str9);
  85. //创建Grid的列颗粒数
  86. gridView.Columns.Add("con", str10);
  87. //创建Grid的列颗粒数
  88. //gridView.Columns.Add("SmallParticle", str11);
  89. //创建Grid的列面积占比
  90. gridView.Columns.Add("AreaRadio", str13);
  91. string con = m_ReportApp.m_conditionChoose.m_conditionData.GetPropItemDisplayValueByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE).ToString();
  92. string po = "";
  93. switch (con)
  94. {
  95. case "DMAX":
  96. po = "DMAX";
  97. //创建Grid的列平均直径
  98. gridView.Columns.Add("av", str4);
  99. //创建Grid的列最大直径
  100. gridView.Columns.Add("max", str7);
  101. break;
  102. case "DMIN":
  103. po = "DMIN";
  104. //创建Grid的列平均直径
  105. gridView.Columns.Add("av", str4);
  106. //创建Grid的列最大直径
  107. gridView.Columns.Add("max", str7);
  108. break;
  109. case "ECD":
  110. po = "Area";
  111. //创建Grid的列平均直径
  112. gridView.Columns.Add("av", str3);
  113. //创建Grid的列最大直径
  114. gridView.Columns.Add("max", str6);
  115. break;
  116. case "FERET":
  117. po = "DFERET";
  118. //创建Grid的列平均直径
  119. gridView.Columns.Add("av", str4);
  120. //创建Grid的列最大直径
  121. gridView.Columns.Add("max", str7);
  122. break;
  123. }
  124. double totalArea = 0;
  125. int sel = m_ReportApp.m_conditionChoose.m_conditionData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE);
  126. gridView.MergeColumnNames.Add(filename);
  127. gridView.AddSpanHeader(1, gridView.Columns.Count - 1, filename);
  128. FieldData fielddata = new FieldData(path);
  129. double scanFieldSize = result.GetScanFieldSizeX();
  130. double wide = result.GetImageWidth();
  131. double high = result.GetImageHeight();
  132. double pixelSize = scanFieldSize / wide;
  133. int filedCount = fielddata.GetFiledCount();
  134. totalArea = high * pixelSize*wide* pixelSize * filedCount;
  135. dt = particledata.GetParticleListByIncA(po);
  136. for (int i = 0; i < dt.Rows.Count; i++)
  137. {
  138. if (Convert.ToInt32(dt.Rows[i]["TypeId"]) < 100)
  139. {
  140. continue;
  141. }
  142. int add_rowindex = gridView.Rows.Add();
  143. gridView.Rows[add_rowindex].Tag= "Statistics";
  144. gridView.Rows[add_rowindex].Cells[0].Value = add_rowindex + 1;
  145. for (int k = 1; k < gridView.ColumnCount; k++)
  146. {
  147. if (gridView.Columns[k].Name == "TypeColor" && dt.Rows[i]["TypeColor"].ToString() != "")
  148. {
  149. string color = dt.Rows[i]["TypeColor"].ToString();
  150. if (!color.Contains("#"))
  151. {
  152. color = "#" + dt.Rows[i]["TypeColor"].ToString();
  153. }
  154. gridView.Rows[add_rowindex].Cells[k].Style.BackColor = DrawFunction.colorHx16toRGB(color);
  155. }
  156. else if (gridView.Columns[k].Name.ToLower() == "av" || gridView.Columns[k].Name.ToLower() == "max")
  157. {
  158. if (con == "ECD")
  159. {
  160. double Area = Convert.ToDouble(dt.Rows[i][gridView.Columns[k].Name]);
  161. gridView.Rows[add_rowindex].Cells[k].Value = Math.Round(Math.Sqrt(Area / Math.PI)* 2,2);
  162. }
  163. else
  164. {
  165. gridView.Rows[add_rowindex].Cells[k].Value = Math.Round( Convert.ToDouble(dt.Rows[i][gridView.Columns[k].Name])* 2,2);
  166. }
  167. gridView.Rows[add_rowindex].Cells[k].Style.BackColor = Color.Azure;
  168. }
  169. else if (gridView.Columns[k].Name.ToLower() == "arearadio")
  170. {
  171. if (totalArea == 0)
  172. {
  173. gridView.Rows[add_rowindex].Cells[k].Value = 0;
  174. }
  175. else
  176. {
  177. gridView.Rows[add_rowindex].Cells[k].Value = Math.Round(Convert.ToDouble(dt.Rows[i]["Area"]) * 100 / totalArea, 3);
  178. }
  179. gridView.Rows[add_rowindex].Cells[k].Style.BackColor = Color.Azure;
  180. }
  181. else
  182. {
  183. gridView.Rows[add_rowindex].Cells[k].Value = dt.Rows[i][gridView.Columns[k].Name];
  184. gridView.Rows[add_rowindex].Cells[k].Style.BackColor = Color.Azure;
  185. }
  186. }
  187. }
  188. for (int i = 0; i < dt.Rows.Count; i++)
  189. {
  190. if (Convert.ToInt32(dt.Rows[i]["TypeId"]) > 100)
  191. {
  192. continue;
  193. }
  194. int add_rowindex = gridView.Rows.Add();
  195. gridView.Rows[add_rowindex].Tag = "Statistics";
  196. int index = FLID.IndexOf(Convert.ToInt32(dt.Rows[i]["TypeId"]));
  197. if (index == -1)
  198. {
  199. index = 7;
  200. }
  201. string name = NameList[index];
  202. gridView.Rows[add_rowindex].Cells[0].Value = add_rowindex + 1;
  203. for (int k = 1; k < gridView.ColumnCount; k++)
  204. {
  205. if (gridView.Columns[k].Name == "TypeColor" && dt.Rows[i]["TypeColor"].ToString() != "")
  206. {
  207. string color = "#000000";
  208. gridView.Rows[add_rowindex].Cells[k].Style.BackColor = DrawFunction.colorHx16toRGB(color);
  209. }
  210. else if (gridView.Columns[k].Name.ToLower() == "av" || gridView.Columns[k].Name.ToLower() == "max")
  211. {
  212. if (con == "ECD")
  213. {
  214. double Area = Convert.ToDouble(dt.Rows[i][gridView.Columns[k].Name]);
  215. gridView.Rows[add_rowindex].Cells[k].Value = Math.Round(Math.Sqrt(Area / Math.PI) * 2, 2);
  216. }
  217. else
  218. {
  219. gridView.Rows[add_rowindex].Cells[k].Value = Math.Round(Convert.ToDouble(dt.Rows[i][gridView.Columns[k].Name]) * 2, 2);
  220. }
  221. gridView.Rows[add_rowindex].Cells[k].Style.BackColor = Color.Azure;
  222. }
  223. else if (gridView.Columns[k].Name.ToLower() == "arearadio")
  224. {
  225. if (totalArea == 0)
  226. {
  227. gridView.Rows[add_rowindex].Cells[k].Value = 0;
  228. }
  229. else
  230. {
  231. gridView.Rows[add_rowindex].Cells[k].Value = Math.Round(Convert.ToDouble(dt.Rows[i]["Area"]) * 100 / totalArea, 5);
  232. }
  233. gridView.Rows[add_rowindex].Cells[k].Style.BackColor = Color.Azure;
  234. }
  235. else
  236. {
  237. gridView.Rows[add_rowindex].Cells[k].Value = dt.Rows[i][gridView.Columns[k].Name];
  238. gridView.Rows[add_rowindex].Cells[k].Style.BackColor = Color.Azure;
  239. }
  240. }
  241. }
  242. gridView.Name = "gridView" + num.ToString();
  243. list_table_Point.Add(SetDataGridViewStyle(gridView));
  244. AddSumRow(gridView);
  245. panel1.Controls.Add(gridView);
  246. list_table_data.Add(dt);
  247. }
  248. void AddSumRow(OTSGridView gridView)
  249. {
  250. if (gridView.Rows == null || gridView.Rows.Count == 0)
  251. return;
  252. int a1 = gridView.Rows.Add();
  253. gridView.Rows[a1].Tag = "Sum";
  254. gridView.Rows[a1].Cells[1].Value = "Sum";
  255. gridView.Refresh();
  256. for (int j = 0; j < gridView.Rows.Count - 1; j++)
  257. {
  258. if (gridView.Rows[a1].Cells[3].Value == null)
  259. gridView.Rows[a1].Cells[3].Value = 0;
  260. gridView.Rows[a1].Cells[3].Value = Convert.ToInt64(gridView.Rows[a1].Cells[3].Value) + Convert.ToInt64(gridView.Rows[j].Cells[3].Value);
  261. if (gridView.Rows[a1].Cells[4].Value == null)
  262. gridView.Rows[a1].Cells[4].Value = 0;
  263. gridView.Rows[a1].Cells[4].Value = Convert.ToDouble(gridView.Rows[a1].Cells[4].Value) + Convert.ToDouble(gridView.Rows[j].Cells[4].Value);
  264. }
  265. gridView.Rows[a1].Height = gridView.Rows[a1-1].Height;
  266. for (int j = 1; j < gridView.Columns.Count; j++)
  267. {
  268. gridView.Rows[a1].DefaultCellStyle.BackColor = Color.Azure;
  269. }
  270. }
  271. private void Graphics(DataTable data,string filename,string comboBox1Text,int pos)
  272. {
  273. ChartControl chartControl1 = new ChartControl();
  274. chartControl1.Series.Clear();
  275. // 假设你已经有一个 ChartControl 实例,并且已经添加了一个饼图 Series
  276. Series series = new Series(filename, ViewType.Bar);
  277. for (int a = 0; a < data.Rows.Count; a++)
  278. {
  279. string name = data.Rows[a]["TypeName"].ToString();
  280. double Cunt = Convert.ToDouble(data.Rows[a]["con"]);
  281. series.Points.Add(new SeriesPoint(name, Cunt));
  282. }
  283. series.LabelsVisibility = DefaultBoolean.True;
  284. chartControl1.Series.Add(series);
  285. //图例的位置定义
  286. chartControl1.Legend.AlignmentVertical = LegendAlignmentVertical.Top;
  287. chartControl1.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.RightOutside;
  288. chartControl1.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;
  289. chartControl1.Legend.Direction = LegendDirection.TopToBottom;
  290. //十字准线光标
  291. chartControl1.CrosshairEnabled = DefaultBoolean.True;
  292. chartControl1.CrosshairOptions.ShowValueLine = true;
  293. chartControl1.CrosshairOptions.ShowArgumentLabels = true;
  294. DevFunctions.ChangeView2(chartControl1, comboBox1Text);
  295. chartControl1.Location = new Point(pos, list_gridheight.Max());
  296. chartControl1.Size = new Size(GridPosition, GridPosition);
  297. // 获取图表的坐标系(通常为 XYDiagram)
  298. XYDiagram diagram = chartControl1.Diagram as XYDiagram;
  299. if (diagram != null)
  300. {
  301. // 设置横坐标(X轴)名称
  302. diagram.AxisX.Title.Text = "种类";
  303. diagram.AxisX.Title.Visibility = DevExpress.Utils.DefaultBoolean.True; // 确保标题可见
  304. // 设置纵坐标(Y轴)名称
  305. diagram.AxisY.Title.Text = "数量";
  306. diagram.AxisY.Title.Visibility = DevExpress.Utils.DefaultBoolean.True; // 确保标题可见
  307. }
  308. panel1.Controls.Add(chartControl1);
  309. }
  310. /// <summary>
  311. /// 设置DataGridView样式
  312. /// </summary>
  313. private Point SetDataGridViewStyle(OTSGridView gridView)
  314. {
  315. //用户不能调整标题的高度
  316. gridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
  317. //用户不能调整 行高
  318. gridView.AllowUserToResizeRows = false;
  319. //改变行的高度;
  320. //gridView.RowTemplate.Height = 20;
  321. //点击选择整行
  322. gridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
  323. //居中显示
  324. System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
  325. dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
  326. gridView.DefaultCellStyle = dataGridViewCellStyle1;
  327. gridView.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
  328. //再次重覆禁用拖动表头高度,居然有效果了
  329. gridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
  330. //设置grid可以复制
  331. gridView.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
  332. //设置每列的宽度
  333. gridView.Columns[0].Width = 40;//第一列序号的宽度设置一下吧,要不太丑
  334. gridView.Columns[1].Width = 200;
  335. //设置序号列不排序
  336. //gridView.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
  337. //设置序号列不可以设置宽度
  338. gridView.Columns[0].Resizable = DataGridViewTriState.False;
  339. gridView.AllowUserToAddRows = false;
  340. gridView.AllowUserToDeleteRows = false;
  341. gridView.AllowUserToResizeRows = false;
  342. gridView.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight;
  343. gridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
  344. gridView.ContextMenuStrip = this.contextMenuStrip1;
  345. gridView.BorderStyle = 0;
  346. //gridView.Dock = System.Windows.Forms.DockStyle.Fill;
  347. //gridView.Location = new System.Drawing.Point(0, 0);
  348. //gridView.Location = new System.Drawing.Point(0, gridheight);
  349. int gridheight = 0;
  350. //chartposition = gridwidth;
  351. int outpos = gridwidth;
  352. gridView.Location = new System.Drawing.Point(gridwidth, 0);
  353. gridView.Margin = new System.Windows.Forms.Padding(2);
  354. gridView.MergeColumnHeaderBackColor = System.Drawing.SystemColors.ButtonHighlight;
  355. //gridView.Name = "Gview_gz";
  356. gridView.ReadOnly = true;
  357. gridView.RowHeadersVisible = false;
  358. gridView.RowHeadersWidth = 40;
  359. gridView.RowTemplate.Height = 30;
  360. //gridView.Size = new System.Drawing.Size(667, 520);
  361. gridView.Size = new System.Drawing.Size(gridView.ColumnCount * 100 + 60, gridView.RowCount * 30);
  362. //gridView.Size = new System.Drawing.Size(gridView.ColumnCount * 100 + 60, gridView.RowCount * 30 + 30);
  363. //gridheight = gridheight + gridView.RowCount * 30 + 80;
  364. gridheight = gridheight + (gridView.RowCount+1) * 30 + 5;
  365. gridwidth = gridwidth + gridView.ColumnCount * 100 + 60;
  366. chartposition = chartposition + gridView.ColumnCount * 100;
  367. GridPosition = gridView.ColumnCount * 100 +40;
  368. list_gridheight.Add(gridheight);
  369. gridView.TabIndex = 0;
  370. gridView.ColumnHeaderMouseClick += new DataGridViewCellMouseEventHandler(this.Gview_ColumnHeaderMouseClick);
  371. gridView.Sorted += new System.EventHandler(this.Gview_gz_Sorted);
  372. //先设置一下头的高度,否则会太矮不好看
  373. gridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing;
  374. gridView.ColumnHeadersHeight = 40;
  375. list_table_size.Add( new Point(gridView.ColumnCount * 100+40, gridView.RowCount * 30));
  376. return new Point(outpos, gridheight+30);
  377. }
  378. #endregion
  379. #region 窗体加载及初始化
  380. /// <summary>
  381. /// 成份分布表,构造函数
  382. /// </summary>
  383. /// <param name="in_sec">传入,委托类对象</param>
  384. /// <param name="in_Cotsreportprojfilemgrclr">传入,项目管理类对象</param>
  385. public CompositionDistributionGrid(OTSIncAReportApp.frmReportApp ReportApp)
  386. {
  387. m_ReportApp = ReportApp;
  388. result = m_ReportApp.m_rstDataMgr.ResultFilesList[m_ReportApp.m_rstDataMgr.GetWorkingResultId()];
  389. source = m_ReportApp.m_conditionChoose.m_conditionData;
  390. m_condition= ReportApp.m_conditionChoose;
  391. InitializeComponent();
  392. //国际化
  393. lan = new Language(this);
  394. table = lan.GetNameTable(this.Name);
  395. }
  396. public void SetGraphicType(ReportCondition sourceGridData)
  397. {
  398. string stdId_TYPE = "";
  399. int stdIdIndex = 0;
  400. //find the stdId condition
  401. var STDIdItm = sourceGridData.ConditionItemList.Find(s => s.iItemId == OTS_REPORT_PROP_GRID_ITEMS.GRAPHIC_TYPE);
  402. if (STDIdItm != null)
  403. {
  404. stdId_TYPE = STDIdItm.itemDisplayVal.ToString();
  405. stdIdIndex = STDIdItm.comboDownList.IndexOf(stdId_TYPE);
  406. }
  407. indexGraphicType = stdIdIndex;
  408. GraphicType = stdId_TYPE;
  409. int high = 0;
  410. for (int i = 0; i < list_table_Point.Count; i++)
  411. {
  412. if (high < list_table_Point[i].Y)
  413. {
  414. high = list_table_Point[i].Y;
  415. }
  416. }
  417. for (int i = 0; i < list_table_data.Count; i++)
  418. {
  419. DataNumber = i;
  420. Graphics(list_table_data[i], list_fileName[i], stdId_TYPE, list_table_size[i], list_table_Point[i], high);
  421. }
  422. }
  423. /// <summary>
  424. /// chart图创建
  425. /// </summary>
  426. /// <param name="dt"></param>
  427. /// <param name="stdId"></param>
  428. private void Graphics(DataTable data, string filename, string comboBox1Text, Point a_size, Point a_Location, int location_hig)
  429. {
  430. ChartControl chartControl1 = new ChartControl();
  431. chartControl1.Series.Clear();
  432. // 假设你已经有一个 ChartControl 实例,并且已经添加了一个饼图 Series
  433. Series series = new Series(filename, ViewType.Bar);
  434. for (int a = 0; a < data.Rows.Count; a++)
  435. {
  436. string name = data.Rows[a]["TypeName"].ToString();
  437. double Cunt = Convert.ToDouble(data.Rows[a]["con"]);
  438. series.Points.Add(new SeriesPoint(name, Cunt));
  439. }
  440. series.LabelsVisibility = DefaultBoolean.True;
  441. chartControl1.Series.Add(series);
  442. //图例的位置定义
  443. chartControl1.Legend.AlignmentVertical = LegendAlignmentVertical.Top;
  444. chartControl1.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.RightOutside;
  445. chartControl1.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;
  446. chartControl1.Legend.Direction = LegendDirection.TopToBottom;
  447. //十字准线光标
  448. chartControl1.CrosshairEnabled = DefaultBoolean.True;
  449. chartControl1.CrosshairOptions.ShowValueLine = true;
  450. chartControl1.CrosshairOptions.ShowArgumentLabels = true;
  451. DevFunctions.ChangeView2(chartControl1, comboBox1Text);
  452. chartControl1.Location = new Point(a_Location.X, location_hig+20);
  453. chartControl1.Size = new Size(a_size.X, a_size.Y);
  454. // 获取图表的坐标系(通常为 XYDiagram)
  455. XYDiagram diagram = chartControl1.Diagram as XYDiagram;
  456. if (diagram != null)
  457. {
  458. // 设置横坐标(X轴)名称
  459. diagram.AxisX.Title.Text = "种类";
  460. diagram.AxisX.Title.Visibility = DevExpress.Utils.DefaultBoolean.True; // 确保标题可见
  461. // 设置纵坐标(Y轴)名称
  462. diagram.AxisY.Title.Text = "数量";
  463. diagram.AxisY.Title.Visibility = DevExpress.Utils.DefaultBoolean.True; // 确保标题可见
  464. }
  465. ComboBox comboBox = new ComboBox();
  466. list_ChartControl.Add(chartControl1);
  467. list_ComboBox.Add(comboBox);
  468. list_ComboBox[list_ComboBox.Count - 1].Items.Add("柱状图");
  469. list_ComboBox[list_ComboBox.Count - 1].Items.Add("折线图");
  470. list_ComboBox[list_ComboBox.Count - 1].Items.Add("饼图");
  471. list_ComboBox[list_ComboBox.Count - 1].Items.Add("圆环图");
  472. list_ComboBox[list_ComboBox.Count - 1].Items.Add("气泡图");
  473. list_ComboBox[list_ComboBox.Count - 1].Items.Add("簇状条形图");
  474. list_ComboBox[list_ComboBox.Count - 1].Items.Add("堆积条形图");
  475. list_ComboBox[list_ComboBox.Count - 1].Items.Add("瀑布图");
  476. list_ComboBox[list_ComboBox.Count - 1].Items.Add("3D柱状图");
  477. list_ComboBox[list_ComboBox.Count - 1].Items.Add("3D圆环图");
  478. list_ComboBox[list_ComboBox.Count - 1].Items.Add("3D饼图");
  479. list_ComboBox[list_ComboBox.Count - 1].Items.Add("3D折线图");
  480. list_ComboBox[list_ComboBox.Count - 1].Items.Add("3D百分比堆积条形图");
  481. list_ComboBox[list_ComboBox.Count - 1].Items.Add("3D漏斗图");
  482. list_ComboBox[list_ComboBox.Count - 1].Items.Add("3DManhattan 条形图");
  483. list_ComboBox[list_ComboBox.Count - 1].Items.Add("3D堆积条形图");
  484. list_ComboBox[list_ComboBox.Count - 1].Items.Add("3D阶梯线图");
  485. list_ComboBox[list_ComboBox.Count - 1].Name = Convert.ToString(list_ComboBox.Count - 1);
  486. list_ComboBox[list_ComboBox.Count - 1].SelectedIndex = 0;
  487. list_ComboBox[list_ComboBox.Count - 1].Location = new Point(a_Location.X+chartControl1.Size.Width-100, location_hig);
  488. list_ComboBox[list_ComboBox.Count - 1].Size = new Size(100, 5);
  489. list_ComboBox[list_ComboBox.Count - 1].SelectedIndexChanged += ComboBox_SelectedIndexChanged;
  490. panel1.Controls.Add(chartControl1);
  491. panel1.Controls.Add(list_ComboBox[list_ComboBox.Count - 1]);
  492. }
  493. private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
  494. {
  495. ComboBox comboBox = sender as ComboBox;
  496. if (comboBox != null)
  497. {
  498. DevFunctions.ChangeView2(list_ChartControl[Convert.ToInt32(comboBox.Name)], comboBox.Text);
  499. }
  500. //DevFunctions.ChangeView2(list_ChartControl[DataNumber], comboBox.Text);
  501. }
  502. private void CompositionDistributionGrid_Load(object sender, EventArgs e)
  503. {
  504. list_table_data.Clear();
  505. list_table_size.Clear();
  506. list_table_Point.Clear();
  507. list_fileName.Clear();
  508. string sou = m_condition.m_CurrentConditions[OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE].itemDisplayVal.ToString();
  509. if (sou.Contains("+"))
  510. {
  511. for (int i = 0; i < sou.Split('+').Length; i++)
  512. {
  513. ResultFile resultFile = m_ReportApp.m_rstDataMgr.ResultFilesList.Find(s => s.anotherFileName == sou.Split('+')[i]);
  514. if (resultFile != null)
  515. {
  516. BindDataGridView(resultFile.FilePath, i, resultFile.anotherFileName);
  517. list_fileName.Add(resultFile.anotherFileName);
  518. }
  519. }
  520. }
  521. else
  522. {
  523. for (int i = 0; i < m_ReportApp.m_rstDataMgr.ResultFilesList.Count; i++)
  524. {
  525. if (sou == m_ReportApp.m_rstDataMgr.ResultFilesList[i].anotherFileName.ToString())
  526. {
  527. BindDataGridView(m_ReportApp.m_rstDataMgr.ResultFilesList[i].FilePath, 0, m_ReportApp.m_rstDataMgr.ResultFilesList[i].anotherFileName);
  528. list_fileName.Add(m_ReportApp.m_rstDataMgr.ResultFilesList[i].anotherFileName);
  529. }
  530. }
  531. }
  532. }
  533. #endregion
  534. #region 相关事件
  535. private void ToolStripMenuItem1_Click(object sender, EventArgs e)
  536. {
  537. OTSGridView otv = (OTSGridView)((ContextMenuStrip)(sender as ToolStripMenuItem).Owner).SourceControl;
  538. //复制整个表
  539. CopyAll(otv);
  540. }
  541. private void ToolStripMenuItem2_Click(object sender, EventArgs e)
  542. {
  543. OTSGridView otv = (OTSGridView)((ContextMenuStrip)(sender as ToolStripMenuItem).Owner).SourceControl;
  544. CopySelected(otv);
  545. }
  546. /// <summary>
  547. /// 复制选择区域
  548. /// </summary>
  549. public void CopySelected(OTSGridView in_ogv)
  550. {
  551. Clipboard.SetDataObject(((OTSGridView)in_ogv).GetClipboardContent());
  552. }
  553. /// <summary>
  554. /// 复制选择区域
  555. /// </summary>
  556. public void CopySelected()
  557. {
  558. DataGridView dgv = (DataGridView)panel1.Controls["Gview_gz"];
  559. //复制选择区域
  560. object oo = dgv.GetClipboardContent();
  561. Clipboard.SetDataObject(dgv.GetClipboardContent());
  562. }
  563. /// <summary>
  564. /// 复制所有
  565. /// </summary>
  566. public void CopyAll(OTSGridView in_ogv)
  567. {
  568. in_ogv.SelectAll();
  569. Clipboard.SetDataObject(((OTSGridView)in_ogv).GetClipboardContent());
  570. }
  571. /// <summary>
  572. /// 复制所有
  573. /// </summary>
  574. public void CopyAll()
  575. {
  576. DataGridView dgv = (DataGridView)panel1.Controls["Gview_gz"];
  577. dgv.SelectAll();
  578. Clipboard.SetDataObject(((OTSGridView)dgv).GetClipboardContent());
  579. }
  580. private void ToolStripMenuItem3_Click(object sender, EventArgs e)
  581. {
  582. foreach (var item in panel1.Controls)
  583. {
  584. if (item.GetType().ToString() == "OTSGridView")
  585. {
  586. panel1.Controls.Remove((OTSGridView)item);
  587. }
  588. }
  589. list_table_data.Clear();
  590. list_table_size.Clear();
  591. list_table_Point.Clear();
  592. list_fileName.Clear();
  593. string sou = source.GetPropItemDisplayValueByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE).ToString();
  594. if (sou.Contains("+"))
  595. {
  596. for (int i = 0; i < sou.Split('+').Length; i++)
  597. {
  598. ResultFile resultFile = m_ReportApp.m_rstDataMgr.ResultFilesList.Find(s => s.anotherFileName == sou.Split('+')[i]);
  599. if (resultFile != null)
  600. {
  601. BindDataGridView(resultFile.FilePath, i, resultFile.anotherFileName);
  602. list_fileName.Add(resultFile.anotherFileName);
  603. }
  604. }
  605. }
  606. else
  607. {
  608. BindDataGridView(m_ReportApp.m_rstDataMgr.ResultFilesList[m_ReportApp.m_rstDataMgr.GetWorkingResultId()].FilePath, 0, m_ReportApp.m_rstDataMgr.ResultFilesList[m_ReportApp.m_rstDataMgr.GetWorkingResultId()].anotherFileName);
  609. list_fileName.Add(m_ReportApp.m_rstDataMgr.ResultFilesList[m_ReportApp.m_rstDataMgr.GetWorkingResultId()].anotherFileName);
  610. }
  611. }
  612. void Gview_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
  613. {
  614. if (((OTSGridView)sender).Rows == null || ((OTSGridView)sender).Rows.Count == 0)
  615. return;
  616. AddSumRow((OTSGridView)sender);
  617. }
  618. private void Gview_gz_Sorted(object sender, EventArgs e)
  619. {
  620. if (((OTSGridView)sender).Rows == null || ((OTSGridView)sender).Rows.Count == 0)
  621. return;
  622. for (int i = 0; i < ((OTSGridView)sender).Rows.Count; i++)
  623. {
  624. if (((OTSGridView)sender).Rows[i].Tag.ToString() == "Sum")
  625. { ((OTSGridView)sender).Rows.RemoveAt(i); break; }
  626. }
  627. ((OTSGridView)sender).Refresh();
  628. //排序完成,重新设置序号
  629. for (int i = 0; i < ((OTSGridView)sender).Rows.Count; i++)
  630. {
  631. ((OTSGridView)sender).Rows[i].Cells[0].Value = (i+1).ToString();
  632. }
  633. }
  634. #endregion
  635. #region 获取向导出模块提供的DataTable和GridView对象
  636. /// <summary>
  637. /// 获取到该模块输出后形成的DataTable,和GridView
  638. /// </summary>
  639. /// <param name="out_dt"></param>
  640. /// <param name="out_dg"></param>
  641. public void GetDataTableAndGridView(out DataTable out_dt, out DataGridView out_dg)
  642. {
  643. out_dt = m_dt;
  644. out_dg = null;
  645. foreach (var item in panel1.Controls)
  646. {
  647. if (item.GetType().ToString() == "OTSGridView")
  648. {
  649. out_dg = ((OTSGridView)item);
  650. }
  651. }
  652. }
  653. #endregion
  654. }
  655. }