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后在根据目录权限设置 }
private object getList(HttpContext context) { BillService service = new BillService(); string data = context.Request["data"]; BillListingQuery listingQuery = JsonConvert.DeserializeObject <BillListingQuery>(data); return(service.GetBillListing1(listingQuery)); }
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)); }
/// <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(); } }