コード例 #1
0
 public JsonForCondition()
 {
     if (!string.IsNullOrEmpty(We7.CMS.Accounts.Security.CurrentAccountID)) //判断是否登录
     {
         condiction = new QueryCondition(HttpContext.Current.Request.Form); //初始化查询对象
         condiction.OnToJsonEvent += new JsonResult().ToJson;
         /*begin*/
         if (!string.IsNullOrEmpty(condiction.HasModelXml))
         {
             bool isSingleTable = new MoldPanel().EnableSingleTable;
             if (condiction.OperType == Enum_operType.Update && !isSingleTable)
             {
                 condiction.OnToJsonEvent += XMLAssistant.UpdataModel;
             }
             if (condiction.OperType == Enum_operType.Del && !isSingleTable)
             {
                 condiction.OnToJsonEvent += XMLAssistant.DeleteModel;
             }
         }
         /*end*/
     }
     else
     {
     }
 }
コード例 #2
0
        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
        }
コード例 #3
0
 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();
 }
コード例 #4
0
        /// <summary>
        /// 提交审核
        /// </summary>
        /// <param name="conn"></param>
        /// <returns></returns>
        public static void SubmitAuditCommand(IQueryCondition condition)
        {
            MoldPanel    mp   = new MoldPanel();
            PanelContext data = GetPanelContext(condition, mp);

            We7.Model.UI.Command.SubmitAuditCommand sac = new Model.UI.Command.SubmitAuditCommand();
            try
            {
                sac.Do(data);
                QueryCondition.SetMessage(condition, condition.TableName, false, "操作", string.Empty, condition.ID.Split(',').Length);
            }
            catch (Exception ex)
            {
                QueryCondition.SetMessage(condition, condition.TableName, true, "操作", ex.Message);
                We7.Framework.LogHelper.WriteLog(typeof(ExpandClass), ex);
            }
        }
コード例 #5
0
        public void ToJson(IQueryCondition condition)
        {
            tablename = condition.TableName;
            var ti = new TableInfo(condition.TableName, condition.ID, condition.ConditionDic);

            switch (condition.OperType)
            {
            case Enum_operType.Add:
                //todo:暂无添加需求
                break;

            case Enum_operType.Del:
                Delete(condition, ti);
                break;

            case Enum_operType.Seach:
                if (!string.IsNullOrEmpty(condition.PIDKeyName))     //树
                {
                    new TreeAssistant().SetTree(condition);
                    break;
                }
                var  mp            = new MoldPanel();
                bool isSingleTable = true;    //是否单表(适用于内容模型)
                if (!string.IsNullOrEmpty(condition.HasModelXml))
                {
                    isSingleTable = mp.EnableSingleTable;
                }
                if (isSingleTable)
                {
                    Search(condition, ti);                    //单表
                }
                else
                {
                    Search(condition, ti, mp);
                }
                break;

            case Enum_operType.Update:
                Update(condition, ti);
                break;

            default:
                break;
            }
        }
コード例 #6
0
        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);
        }
コード例 #7
0
ファイル: WidgetDetail.cs プロジェクト: jiaping/JPCMS
        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);
            }
        }
コード例 #8
0
ファイル: WidgetList.cs プロジェクト: jiaping/JPCMS
        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;
            }
        }
コード例 #9
0
        /// <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);
            }
        }