private void Search(IQueryCondition condition, TableInfo ti, MoldPanel mp) { #region 木有启用单表存储(适用于旧版本) 处理逻辑 //xml解析字段 PanelContext data = mp.GetPanelContext(condition.ModelName, "list"); data.PageIndex = condition.Page; data.c = new Criteria(CriteriaType.Equals, "ModelName", condition.ModelName); //设置条件 if (condition.Condition != null) { data.c.Criterias.Add(condition.Condition); } ListResult result = new QueryCommand().Do(data) as ListResult; if (result != null) { DataTable dt = result.DataTable.Clone(); for (int i = 0; i < dt.Columns.Count; i++) { string name = dt.Columns[i].ColumnName.Clone().ToString(); bool isExist = FiledExists(condition.Fields, name); if (!isExist) { result.DataTable.Columns.Remove(name); } } //todo:XML数据源过滤信息? ti.Table = result.DataTable; string json = ti.ToJson(); condition.total = result.RecoredCount; condition.Page = result.PageIndex; condition.JsonMessage.Add(Enum_operType.Seach.ToString(), json.Replace("{0}", condition.total.ToString()).Replace("{1}", "200").Replace("{2}", "数据成功返回").Replace("{3}", condition.Page.ToString()).Replace("{4}", condition.totalPage.ToString())); //查询结果特殊处理 } #endregion }
public ListUIPanel() { mp = new MoldPanel(); ListpanelContext = mp.GetPanelContext(HttpContext.Current.Request.QueryString["model"], "list"); columns = ListpanelContext.Panel.ListInfo.Groups[0].Columns; condition = ListpanelContext.Panel.ConditionInfo; InvokeAjaxTemplate(); }
private static PanelContext GetPanelContext(IQueryCondition qc, MoldPanel mp, string type = "list") { PanelContext data = mp.GetPanelContext(qc.ModelName, type); //设置为List类型(暂时写死) if (!string.IsNullOrEmpty(qc.ID)) { List <DataKey> dataKeys = new List <DataKey>(); foreach (var item in qc.ID.Split(',')) { OrderedDictionary dic = new OrderedDictionary(); dic.Add(qc.PriMaryKeyName, item); dataKeys.Add(new DataKey(dic as IOrderedDictionary)); } data.State = dataKeys; } return(data); }
protected override void OnInitData() { ModelDBHelper helper = ModelDBHelper.Create(ModelName); Criteria c = CreateEntryCriteria(); DataTable dt = helper.Query(c, CreateOrders(), 0, 0, Fields); if (null != dt) { JoinEx joinex = new JoinEx(); MoldPanel mp = new MoldPanel(); ColumnInfoCollection columns = mp.GetPanelContext(ModelName, "list").Panel.ListInfo.Groups[0].Columns; foreach (ColumnInfo item in columns) { if (!string.IsNullOrEmpty(item.Params["model"])) { joinex.JoinInfo.Add(item.Name, new JoinEx() { MainField = item.Name, PriMaryKeyName = item.Params["valuefield"], ToField = item.Params["textfield"], ToTableName = item.Params["model"] }); } } if (joinex.JoinInfo != null && joinex.JoinInfo.Count > 0) { DataBaseAssistant db = new DataBaseAssistant(); dt = db.Join(dt, joinex); } } /*end*/ Item = dt != null && dt.Rows.Count > 0 ? dt.Rows[0] : dt.NewRow(); //更新点击次数 if (dt.Columns.Contains("Clicks")) { Dictionary <string, object> dic = new Dictionary <string, object>(); int clicks = Item["Clicks"].Equals(DBNull.Value) ? 0 : Convert.ToInt32(Item["Clicks"]); clicks++; dic.Add("Clicks", clicks); helper.Update(dic, c); } }
protected override void OnInitData() { Criteria c = CreateCriteria(); List <Order> os = CreateOrders(); ModelDBHelper dbhelper = ModelDBHelper.Create(ModelName); // Items = dbhelper.QueryPagedList(c, os, 0, PageSize).Rows; DataTable dt = dbhelper.QueryPagedList(c, os, 0, PageSize, Fields); /*begin 表关联相关*/ if (null != dt) { JoinEx joinex = new JoinEx(); MoldPanel mp = new MoldPanel(); ColumnInfoCollection columns = mp.GetPanelContext(ModelName, "list").Panel.ListInfo.Groups[0].Columns; foreach (ColumnInfo item in columns) { if (!string.IsNullOrEmpty(item.Params["model"])) { joinex.JoinInfo.Add(item.Name, new JoinEx() { MainField = item.Name, PriMaryKeyName = item.Params["valuefield"], ToField = item.Params["textfield"], ToTableName = item.Params["model"] }); } } if (joinex.JoinInfo != null && joinex.JoinInfo.Count > 0) { DataBaseAssistant db = new DataBaseAssistant(); dt = db.Join(dt, joinex); } } /*end*/ if (dt != null) { Items = dt.Rows; } }
/// <summary> /// 更新模型xml /// </summary> /// <returns></returns> public static void UpdataModel(IQueryCondition condition) { string ModelXml = condition.HasModelXml; //数据模型信息 if (!string.IsNullOrEmpty(ModelXml) && condition.OperType == Enum_operType.Update) { List <string> list = new List <string>(condition.Fields); list.Add(ModelXml); if (!list.Contains(condition.PriMaryKeyName)) { list.Add(condition.PriMaryKeyName); //加上主键 } MoldPanel mp = new MoldPanel(); PanelContext data = mp.GetPanelContext(condition.ModelName, "list"); //设置为List类型(暂时写死) Criteria criteria = new Criteria(CriteriaType.None); criteria.Mode = CriteriaMode.Or; foreach (var item in condition.ID.Split(',')) { criteria.AddOr(CriteriaType.Equals, condition.PriMaryKeyName, item); } TableInfo tableinfo = new TableInfo(data.Model.Type.ToString()); var tablelist = getDataBase(tableinfo).IDatabase.GetDtByCondition <TableInfo>(data.Model.Type.ToString(), criteria, list.ToArray()); //获取对应字段,的table信息 DataTable dt = null != tablelist ? tablelist[0].Table : null; condition.OperType = Enum_operType.Update; //设为修改类型 foreach (DataRow item in dt.Rows) { if (item[ModelXml] != DBNull.Value && item != null) { List <FieldsDic> Fileds = new List <FieldsDic>(); // 最终字典 DataSet ds = BaseDataProvider.CreateDataSet(data.Model); //穿件数据集 BaseDataProvider.ReadXml(ds, item[ModelXml].ToString()); var files = condition.ConditionDic; //获取到的字典 if (!files.Exists(delegate(FieldsDic f) { if (string.Compare(f.Key, ModelXml, true) == 0) { return(true); } else { return(false); } })) //添加XML扩展字段 { files.Add(new FieldsDic(ModelXml, string.Empty)); } foreach (var file in files) { if (!file.Key.ToUpper().Equals(condition.PriMaryKeyName) && ds.Tables[data.Table.Name].Columns.Contains(file.Key)) { ds.Tables[data.Table.Name].Rows[0][file.Key] = file.Value; //赋值 if (!Fileds.Exists(delegate(FieldsDic f) { if (string.Compare(f.Key, condition.HasModelXml, true) == 0) { return(true); } else { return(false); } })) { files.Add(new FieldsDic(file.Key, file.Value)); } } } Fileds.Find(delegate(FieldsDic f) { if (string.Compare(f.Key, ModelXml, true) == 0) { f.Value = BaseDataProvider.GetXml(ds); //拿到XML 赋值 return(true); } else { return(false); } }); TableInfo ti = new TableInfo(data.Model.Type.ToString(), item[condition.PriMaryKeyName].ToString(), Fileds); list.Remove(condition.PriMaryKeyName); TryUpData(condition, list, ti, data.Model.Type.ToString(), true); } } QueryCondition.SetMessage(condition, "模型字段:" + condition.HasModelXml, false, "修改", string.Empty, dt.Rows.Count); } }