/// <summary> /// 如果列表有编辑列,获取编辑列类型是下拉列表的数据源 /// </summary> /// <param name="gridObj"></param> /// <returns></returns> public Dictionary <string, string> ReadListDataAndFormat(CPGrid gridObj) { Dictionary <string, string> col = new Dictionary <string, string>(); gridObj.ColumnCol.ForEach(t => { if (t.ColumnType == CPGridEnum.ColumnTypeEnum.DropDownListEditor) { if (string.IsNullOrEmpty(t.FieldEnumDataIns)) { throw new Exception("字段" + t.FieldName + "配置成下拉列表编辑列,但未配置下拉列表数据源数据库实例"); } if (string.IsNullOrEmpty(t.FieldEnumDataSource)) { throw new Exception("字段" + t.FieldName + "配置成下拉列表编辑列,但未配置下拉列表数据源"); } DbHelper dbHelper = new DbHelper(t.FieldEnumDataIns, CPAppContext.CurDbType()); string strSql = t.FieldEnumDataSource; try { strSql = CPExpressionHelper.Instance.RunCompile(strSql); DataTable dt = dbHelper.ExecuteDataTable(strSql); DataTable dtNew = new DataTable(); dtNew.Columns.Add(new DataColumn() { ColumnName = "textEx", DataType = typeof(string) }); dtNew.Columns.Add(new DataColumn() { ColumnName = "valueEx", DataType = typeof(string) }); foreach (DataRow dr in dt.Rows) { DataRow newDR = dtNew.NewRow(); newDR["textEx"] = dr[0]; if (dt.Columns[1].DataType == Type.GetType("System.Boolean")) { newDR["valueEx"] = dr[1].ToString().Trim().ToLower(); } else { newDR["valueEx"] = dr[1]; } dtNew.Rows.Add(newDR); } col.Add("Column" + t.Id.ToString(), CPUtils.DataTable2Json(dtNew)); } catch (Exception ex) { throw new Exception("执行sql语句:" + strSql + "出错,详细信息为:" + ex.Message); } } }); return(col); }
public GetGridDataReturn GetGridData(string GridCode, int CurUserId, string CurUserIden, int page, int pageSize, string OtherCondition) { base.SetHeader(); GridCode = CPAppContext.FormatSqlPara(GridCode); CurUserIden = CPAppContext.FormatSqlPara(CurUserIden); //OtherCondition = CPAppContext.FormatSqlPara(OtherCondition); if (OtherCondition != null) { OtherCondition = System.Web.HttpUtility.UrlDecode(OtherCondition); OtherCondition = OtherCondition.Replace("@", "%"); } GetGridDataReturn re = new GetGridDataReturn(); try { CPGrid Grid = CPGridEngine.Instance(CurUserId).GetGrid(GridCode, true, true); string orderBy = ""; #region 获取排序字段 List <string> querys = CPAppContext.GetHttpContext().Request.Query.Keys.Where(t => t.StartsWith("sort[")).ToList(); var queryCount = querys.Count(m => m.EndsWith("[field]")); for (int i = 0; i < queryCount; i++) { //请查询字段和对应的值存储在一个字典中 string field = CPAppContext.QueryString <string>("sort[" + i + "][field]"); field = field.Replace("Column", ""); List <CPGridColumn> colTmp = Grid.ColumnCol.Where(c => c.Id.Equals(int.Parse(field))).ToList(); if (colTmp.Count > 0) { field = colTmp[0].FieldName; } string fieldValue = CPAppContext.QueryString <string>("sort[" + i + "][dir]"); if (string.IsNullOrEmpty(orderBy)) { orderBy = field + " " + fieldValue; } else { orderBy += "," + field + " " + fieldValue; } } #endregion if (this.CheckUserIden(CurUserId, CurUserIden) == false) { re.Result = false; re.ErrorMsg = "系统检测到非法获取数据,请传入正确的用户会话Key与用户Id参数!"; return(re); } try { int recordSize = 0; DataTable dt = CPGridEngine.Instance(CurUserId).ReadDataAndFormat(Grid, page, pageSize, OtherCondition, orderBy, out recordSize); re.RecordSize = recordSize; re.DataJson = CPUtils.DataTable2Json(dt); re.Result = true; } catch (Exception ex) { re.Result = false; re.ErrorMsg = ex.Message.ToString(); } return(re); } catch (Exception ex) { re.Result = false; re.ErrorMsg = ex.Message.ToString(); return(re); } }