private string GetPID(AssetsData dr, GroupInfoQueue lstGroupInfo, int index) { string result = GlobalInfo.TreeRootID; for (int i = 0; i <= index; i++) { GroupInfo item = lstGroupInfo[i]; string fieldValue = GetID(dr, item); if (!string.IsNullOrEmpty(result)) { result += "_"; } result += fieldValue; } return(result); }
public List <IEntityData> GetLstEntityData(GroupInfoQueue lstGroupInfo, List <AssetsData> lstRows) { Dictionary <string, IEntityData> dictAll = new Dictionary <string, IEntityData>(); //详细的追加已有序的数据行 foreach (AssetsData dr in lstRows) { if (dictAll.ContainsKey(dr.ID)) { continue; } dr.PID = GetPID(dr, lstGroupInfo); dictAll.Add(dr.ID, dr); } return(dictAll.Values.ToList <IEntityData>()); }
//将分组及数据,组织成IP、PID、Text的接口队列 public List <IEntityData> GetLstEntityDataForTree(GroupInfoQueue lstGroupInfo, List <AssetsData> lstRows) { Dictionary <string, IEntityData> dictAll = new Dictionary <string, IEntityData>(); //先遍历层级,并升降排序 for (int i = 0; i < lstGroupInfo.Count; i++) { GroupInfo item = lstGroupInfo[i]; #region 获取每一级的内容 Dictionary <string, IEntityData> dictLevel = new Dictionary <string, IEntityData>(); foreach (AssetsData dr in lstRows) { //当前的层级的PID string level_PID = GetPID(dr, lstGroupInfo, i - 1); GroupData td = new GroupData(); td.SortType = item.Type; td.PID = level_PID; //当前的层级的值 string fieldValue = GetID(dr, item); //当前的层级的PID string level_ID = null; //组装PID if (!string.IsNullOrEmpty(level_PID)) { level_ID = level_PID + "_"; } level_ID += fieldValue; //如果已经包含此键 if (dictLevel.ContainsKey(level_ID)) { continue; } td.ID = level_ID; td.Text = fieldValue; dictLevel.Add(level_ID, td); } #endregion //对每一级内容进行排序 if (item.Asc) { dictLevel = dictLevel.OrderBy(o => o.Key).ToDictionary(o => o.Key, p => p.Value); } else { dictLevel = dictLevel.OrderByDescending(o => o.Key).ToDictionary(o => o.Key, p => p.Value); } //追加到主队列中 Append(dictAll, dictLevel); } //详细的追加已有序的数据行 foreach (AssetsData dr in lstRows) { if (dictAll.ContainsKey(dr.ID)) { continue; } dr.PID = GetPID(dr, lstGroupInfo); dictAll.Add(dr.ID, dr); } return(dictAll.Values.ToList <IEntityData>()); }
private string GetPID(AssetsData dr, GroupInfoQueue lstGroupInfo) { return(GetPID(dr, lstGroupInfo, lstGroupInfo.Count - 1)); }
private void button1_Click(object sender, EventArgs e) { groupInfoQueue = uctSort1.GetLstSortInfo <GroupInfo, GroupInfoQueue>(); this.DialogResult = System.Windows.Forms.DialogResult.OK; }
public FrmAssetsGroup(GroupInfoQueue groupInfoQueue) { InitializeComponent(); this.groupInfoQueue = groupInfoQueue; }