/// <summary> /// 行标题添加 /// </summary> /// <param name="itemChild">子项</param> /// <param name="itemProperty">内部名称</param> /// <param name="addXiaoJi">是否开始添加小计</param> /// <param name="isRowFinish">是否完成</param> void RowTittleInit(TongJiDataGrid.TJGridView datagrrd, TongJiItemChild itemChild, string itemProperty, bool addXiaoJi, bool isRowFinish) { try { //若有小计,去除 if (itemChild.PropertyList.Contains("小计")) { itemChild.PropertyList.Remove("小计"); } //子级关系 if (itemChild.DicPropertyCaml != null && rowItemTagList.Contains(itemChild.ParentPropertyName)) { itemChild.IntIndenttitys.Clear(); List <string> titleSumList = new List <string>(); //遍历进行列标题的添加 for (int p = 0; p < itemChild.DicPropertyCaml.Count; p++) { if (itemChild.DicPropertyCaml.Values.ElementAt(p).Contains("小计")) { itemChild.DicPropertyCaml.Values.ElementAt(p).Remove("小计"); } //加一个映射点 itemChild.IntIndenttitys.Add(itemChild.DicPropertyCaml.Values.ElementAt(p).Count); //通过列表名称获取其标题内容(加载最后一行标题标注为完成) if (addXiaoJi && _IsNeedXiaoJi) { itemChild.DicPropertyCaml.Values.ElementAt(p).Add("小计"); itemChild.IntIndenttitys[p]++; } titleSumList.AddRange(itemChild.DicPropertyCaml.Values.ElementAt(p)); } //通过列表名称获取其标题内容 datagrrd._RowHeaderAdd(titleSumList, itemChild.IntIndenttitys, isRowFinish); } else { //最后一列有小计 if (addXiaoJi && _IsNeedXiaoJi) { itemChild.PropertyList.Add("小计"); } //添加行标题 datagrrd._RowHeaderAdd(itemChild.PropertyList, isRowFinish); } //如SheBeiTypeErJi rowItemTagList.Add(itemProperty); } catch (Exception ex) { MethodLb.CreateLog(this.GetType().FullName, "RowTittleInit", ex.ToString(), itemChild, itemProperty, addXiaoJi, isRowFinish); } }
/// <summary> /// 通过指定条件获取单元格数据 /// </summary> /// <param name="striTittleList"></param> /// <returns></returns> public object[] GetData(TongJiDataGrid.TJGridView dataGridd, System.Data.DataTable dataTable, string[] listRealRow, int rowPosition) { object[] data = new object[dataGridd.dataGrid.Columns.Count]; try { for (int columnPosition = 0; columnPosition < data.Count(); columnPosition++) { object count = 0; string expression = string.Empty; #region 获取表达式 if (columnPosition < data.Count() - 1) { for (int i = 0; i < listRealRow.Count(); i++) { var item = listRealRow[i]; if (item.Contains("月")) { expression += GetMonthExpression(listRealRow[i - 1] + item, i, this.rowItemTagList); } else if (!item.Equals("小计") && !item.Contains("月") && !item.Contains("年")) { expression += this.rowItemTagList[i] + "=" + "'" + item + "'" + " And "; } else if (listRealRow.Contains("小计") && item.Contains("年")) { expression += GetYearExpression(item, i, this.rowItemTagList); } } for (int i = 0; i < dataGridd.tongjiC.GetRangeTittle(columnPosition).Count(); i++) { var range = dataGridd.tongjiC.GetRangeTittle(columnPosition); var item = range[i]; if (item.Contains("月")) { expression += GetMonthExpression(dataGridd.tongjiC.GetRangeTittle(columnPosition)[i - 1] + item, i, this.columnItemTagList); } else if (!item.Equals("小计") && !item.Contains("月") && !item.Contains("年")) { expression += this.columnItemTagList[i] + "=" + "'" + item + "'" + " And "; } else if (range.Contains("小计") && item.Contains("年")) { expression += GetYearExpression(item, i, this.columnItemTagList); } } } else { for (int i = 0; i < listRealRow.Count(); i++) { var item = listRealRow[i]; if (item.Contains("月")) { expression += GetMonthExpression(listRealRow[i - 1] + item, i, this.rowItemTagList); } else if (!item.Equals("小计") && !item.Contains("月") && !item.Contains("年")) { expression += this.rowItemTagList[i] + "=" + "'" + item + "'" + " And "; } else if (listRealRow.Contains("小计") && item.Contains("年")) { expression += GetYearExpression(item, i, this.rowItemTagList); } } } #endregion string realExpression = string.Empty; if (expression.Contains(" And ")) { realExpression = expression.Substring(0, expression.LastIndexOf(" And ")); } var result = dataTable.Compute("Count(ID)", realExpression); if (result == DBNull.Value) { count = "0"; } else { //统计结果 var cc = Convert.ToInt32(result); if (cc == 0) { count = "0"; } else { count = cc; } } data[columnPosition] = count; } } catch (Exception ex) { MethodLb.CreateLog(this.GetType().FullName, "GetData", ex.ToString(), dataTable, listRealRow, rowPosition); } return(data); }