Ejemplo n.º 1
0
        public override void BeforeFillList(LibHandle libHandle, DataTable table, object listingQuery, LibEntryParam entryParam)
        {
            base.BeforeFillList(libHandle, table, listingQuery, entryParam);
            if (libHandle == null || table == null || listingQuery == null)
            {
                return;
            }
            BillListingQuery queryinfo = listingQuery as BillListingQuery;

            if (queryinfo == null)
            {
                return;
            }
            int dirType = 0;

            if (int.TryParse((from item in queryinfo.Condition.QueryFields
                              where item.Name.Equals("DIRTYPE") && item.QueryChar.Equals(LibQueryChar.Equal) &&
                              item.Value.Count == 1
                              select item.Value[0]).FirstOrDefault().ToString(), out dirType) == false)
            {
                return;
            }
            if (dirType == (int)DirTypeEnum.Private)
            {
                //私有目录,根据创建人进行标识
                AxCRL.Core.Comm.LibQueryField libQueryField = new AxCRL.Core.Comm.LibQueryField();
                libQueryField.Name      = "CREATORID";
                libQueryField.QueryChar = LibQueryChar.Equal;
                libQueryField.Value.Add(libHandle.PersonId);
                queryinfo.Condition.QueryFields.Add(libQueryField);
            }
            //公共目录,在Fill后在根据目录权限设置
        }
Ejemplo n.º 2
0
        private object getList(HttpContext context)
        {
            BillService service = new BillService();

            string data = context.Request["data"];

            BillListingQuery listingQuery = JsonConvert.DeserializeObject <BillListingQuery>(data);

            return(service.GetBillListing1(listingQuery));
        }
Ejemplo n.º 3
0
        public object SelectQueryField(HttpContext context)
        {
            BillService service = new BillService();

            string data = context.Request["data"];

            BillListingQuery listingQuery = JsonConvert.DeserializeObject <BillListingQuery>(data);

            return(service.SelectQueryField1(listingQuery.Handle, listingQuery.ProgId));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 对主表的列表数据增加处理
        /// 设置获取目录下的文档简要信息、目录/文档的的“目录链接”虚字段等
        /// </summary>
        /// <param name="dataTable"></param>
        public override void AfterFillList(LibHandle libHandle, DataTable table, object listingQuery, LibEntryParam entryParam)
        {
            base.AfterFillList(libHandle, table, listingQuery, entryParam);
            if (libHandle == null || table == null || listingQuery == null)
            {
                return;
            }

            BillListingQuery queryinfo = listingQuery as BillListingQuery;

            if (queryinfo == null || queryinfo.Condition == null ||
                queryinfo.Condition.QueryFields == null ||
                queryinfo.Condition.QueryFields.Count == 0)
            {
                return;
            }
            string belongDirID = "";

            //查询获得父目录编码
            belongDirID = (from item in queryinfo.Condition.QueryFields
                           where item.Name.Equals("PARENTDIRID") && item.QueryChar.Equals(LibQueryChar.Equal) &&
                           item.Value.Count == 1
                           select item.Value[0]).FirstOrDefault().ToString();

            int dirType = 0;

            if (int.TryParse((from item in queryinfo.Condition.QueryFields
                              where item.Name.Equals("DIRTYPE") && item.QueryChar.Equals(LibQueryChar.Equal) &&
                              item.Value.Count == 1
                              select item.Value[0]).FirstOrDefault().ToString(), out dirType) == false)
            {
                return;
            }

            DataTable dtDir = table;

            #region 公共目录则还需要再根据权限筛选一次
            if (libHandle.UserId != "admin" && dirType == (int)DirTypeEnum.Public)
            {
                //公共目录则还需要再根据权限筛选一次
                List <string> dirIdList = new List <string>();
                foreach (DataRow row in dtDir.Rows)
                {
                    dirIdList.Add(LibSysUtils.ToString(row["DIRID"]));
                }
                dirIdList = DMPermissionControl.Default.FilterDirIds(libHandle, DMFuncPermissionEnum.Browse, dirIdList);//筛选具有浏览权限的目录标识号
                List <DataRow> toDeleteList = new List <DataRow>();
                foreach (DataRow row in dtDir.Rows)
                {
                    if (dirIdList.Contains(LibSysUtils.ToString(row["DIRID"])) == false)
                    {
                        toDeleteList.Add(row);
                    }
                }
                foreach (DataRow row in toDeleteList)
                {
                    dtDir.Rows.Remove(row);
                }
                dtDir.AcceptChanges();
            }
            #endregion


            string dirLinkAddress = "";
            if (belongDirID.Equals(""))
            {
                dirLinkAddress = "";//如果父目录编码为空则目录链接的路径也为空
            }
            else
            {
                DirLinkAddress dirLink = new DirLinkAddress(belongDirID, this.DataAccess);
                dirLinkAddress = dirLink.DirNameLink;//获取目录链接虚字段
            }

            foreach (DataRow row in dtDir.Rows)
            {
                //设置目录数据行的信息
                row["ISDIR"]          = true;
                row["DOCTYPE"]        = "目录";
                row["DIRLINKADDRESS"] = dirLinkAddress;//设置目录的目录链接虚字段

                row["DOCNAME"] = row["DIRNAME"];
            }

            //获取目录下的文档数据行并设置简要信息虚字段
            #region 获取目录下的文档数据行并设置简要信息虚字段
            DmDocumentBcf docBcf = new DmDocumentBcf();
            DataTable     dtDoc  = docBcf.GetDocOfDir(libHandle, belongDirID, (DirTypeEnum)dirType);
            if (dtDoc != null && dtDoc.Rows.Count > 0)
            {
                DataRow newRow = null;
                foreach (DataRow rowDoc in dtDoc.Rows)
                {
                    newRow                   = dtDir.NewRow();
                    newRow["DIRID"]          = Guid.NewGuid().ToString().Substring(0, 20);//设置一个不重复的值作为编号
                    newRow["DIRNAME"]        = "无意义";
                    newRow["DOCCOUNT"]       = 0;
                    newRow["PARENTDIRID"]    = rowDoc["DIRID"];
                    newRow["DIRTYPE"]        = 0;
                    rowDoc["DIRLINKADDRESS"] = dirLinkAddress; //设置目录的目录链接虚字段
                    newRow["SORTORDER"]      = int.MaxValue;   //实现文档在目录的下面

                    //文档虚字段
                    newRow["DOCID"]     = rowDoc["DOCID"];
                    newRow["DOCNAME"]   = rowDoc["DOCNAME"];
                    newRow["ISDIR"]     = false;
                    newRow["DOCTYPE"]   = rowDoc["DOCTYPE"];
                    newRow["LOCKSTATE"] = rowDoc["LOCKSTATE"];
                    newRow["DOCSIZE"]   = rowDoc["DOCSIZE"];
                    newRow["SAVEPATH"]  = rowDoc["SAVEPATH"];

                    newRow["LASTUPDATETIME"] = rowDoc["LASTUPDATETIME"];
                    newRow["CREATORNAME"]    = rowDoc["CREATORNAME"];

                    newRow["SORTORDER"] = rowDoc["SORTORDER"];

                    dtDir.Rows.Add(newRow);
                }
            }
            #endregion

            //对目录按照SortOrder从小到大排序 ,文档目录在上
            #region 对目录按照SortOrder从小到大排序 ,文档目录在上
            table.DefaultView.Sort = "ISDIR desc,SORTORDER asc";
            DataTable copyTable = table.DefaultView.ToTable();
            table.Rows.Clear();
            for (int i = 0; i < copyTable.Rows.Count; i++)
            {
                table.Rows.Add(copyTable.Rows[i].ItemArray);
            }
            #endregion

            if (table.DataSet != null)
            {
                table.DataSet.AcceptChanges();
            }
        }