Exemplo n.º 1
0
        private void GenerateHtmlInOneRow <TKey, TTable, TDataContext, TRow>(StringBuilder sb, string cssClass, string cssClass0, string cssClass1, GenearetHtml handler, BaseDataSourceView <TKey, TTable, TDataContext, TRow> view, TTable currentRow, SetDataRow <TRow> setDataRowDelegate, int countChilds, int allCountChilds, int level)
            where TKey : struct
            where TTable : class
            where TDataContext : DataContext, new()
            where TRow : BaseRow, new()
        {
            string id = view.GetStringID(currentRow);

            if (_loadedIDs.ContainsKey(id))
            {
                UsePostBackForChilds = false;
                GenerateHtmlInOneRow(sb, cssClass, null, handler);
            }
            else if ((
                         (LoadTreeCount >= allCountChilds && _sumCounts < MaxSumCounts) ||
                         countChilds <= MinCountNotCheckLoad
                         ) && level < MaxLevelTreeLoad && countChilds > 0)
            {
                _sumCounts          += countChilds;
                UsePostBackForChilds = false;
                GenerateHtmlInOneRow(sb, cssClass, null, handler);
                ChildsID.Add(id);
                _loadedIDs.Add(id, true);
                var          data             = view.GetDataByRefParent(currentRow);
                bool         class0           = true;
                PropertyInfo itemPropertyInfo = null;
                foreach (var row in data)
                {
                    if (itemPropertyInfo == null)
                    {
                        itemPropertyInfo = row.GetType().GetProperty("Item");
                    }
                    var count = row.CountChildsData();
                    setDataRowDelegate(row);
                    GenerateHtmlInOneRow(sb, class0 ? cssClass0 : cssClass1,
                                         cssClass0, cssClass1, handler, view,
                                         (TTable)itemPropertyInfo.GetValue(row, null), setDataRowDelegate,
                                         count, allCountChilds * count, level + 1);
                    class0 = !class0;
                }
                ChildsID.RemoveAt(ChildsID.Count - 1);
            }
            else
            {
                UsePostBackForChilds = true;
                GenerateHtmlInOneRow(sb, cssClass, null, handler);
            }
        }
Exemplo n.º 2
0
        private void GenerateHtmlInOneRow(StringBuilder sb, string cssClass, string cssClassNotSelected, GenearetHtml handler)
        {
            int colSpan = 0;

            sb.AppendLine();
            int tabCount = ChildsID != null ? ChildsID.Count : 0;

            sb.Append('\t', tabCount);
            sb.AppendFormat("<tr class=\"{0}\" notSelectedCSS=\"{1}\"", cssClass, cssClassNotSelected);
            if (ChildsID != null)
            {
                if (ChildsID.Count > 0)
                {
                    sb.Append(" style=\"display:none\"");
                }
                sb.AppendFormat(" level=\"{0}\" parentID=\"{1}\"", ChildsID.Count, ChildsID.LastOrDefault());

                /*int i = 0;
                 * foreach (var childID in ChildsID)
                 * {
                 *  sb.Append(" level");
                 *  sb.Append(i);
                 *  sb.Append("=\"");
                 *  sb.Append(childID);
                 *  i++;
                 * }*/
            }
            sb.Append(">");
            sb.AppendLine();

            foreach (var column in Columns.Where(p => p.Visible && (p.VisiblePermissions == null || UserRoles.IsInAnyRoles(p.VisiblePermissions))))
            {
                colSpan--;
                if (colSpan > 0 || column.ColSpan == 0)
                {
                    continue;
                }
                var rowSpan = column.GetRowSpan();
                if (rowSpan < 0)
                {
                    continue;
                }

                var style = column.GetStyle();
                colSpan = column.ColSpan;
                sb.AppendLine();
                sb.Append('\t', tabCount + 1);
                sb.Append("<td");
                if (colSpan > 1)
                {
                    sb.Append(" colspan=");
                    sb.Append(colSpan);
                }
                if (rowSpan > 1)
                {
                    sb.Append(" rowspan=");
                    sb.Append(rowSpan);
                }

                if (!string.IsNullOrEmpty(style))
                {
                    sb.Append(" style=\"");
                    sb.Append(style);
                    sb.Append("\"");
                }

                sb.Append(">");

                handler(sb, column);
                sb.Append("</td>");
                sb.AppendLine();
            }

            sb.AppendLine();
            sb.Append('\t', tabCount);
            sb.AppendLine("</tr>");
        }