Example #1
0
        /// <summary>
        /// 构造分组
        /// </summary>
        /// <param name="p_rows"></param>
        /// <returns></returns>
        GroupDataList BuildGroups(IList p_rows)
        {
            var          groupRows = new GroupDataList();
            PropertyInfo pi        = null;

            if (!(_data is Table))
            {
                // 分组属性
                pi = p_rows[0].GetType().GetProperty(_owner.GroupName, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);
                if (pi == null)
                {
                    return(groupRows);
                }
            }

            GroupData <object> group;
            string             name;

            foreach (object row in p_rows)
            {
                if (pi == null)
                {
                    // Row
                    name = ((Row)row).Str(_owner.GroupName);
                }
                else
                {
                    // 普通对象
                    object obj = pi.GetValue(row);
                    name = (obj == null) ? "" : obj.ToString();
                }

                if (groupRows.Contains(name))
                {
                    group = groupRows[name];
                }
                else
                {
                    group       = new GroupData <object>();
                    group.Title = name;
                    groupRows.Add(group);
                }
                group.Add(row);
            }
            return(groupRows);
        }