Ejemplo 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);
            }
        }
Ejemplo n.º 2
0
 public void GeneateReadHtml <TKey, TTable, TDataContext, TRow>(StringBuilder sb, string cssClass, string cssClass0, string cssClass1, BaseDataSourceView <TKey, TTable, TDataContext, TRow> view, TTable currentRow, SetDataRow <TRow> setDataRowDelegate, int countChilds)
     where TKey : struct
     where TTable : class
     where TDataContext : DataContext, new()
     where TRow : BaseRow, new()
 {
     if (ChildsID == null)
     {
         ChildsID = new List <string>();
     }
     if (GenerateWithoutRow)
     {
         GenerateHtmlWithoutRow(sb, GenerateReadHtml);
     }
     else if (CountRowsInOneRow == 0)
     {
         GenerateHtmlInOneRow(sb, cssClass, cssClass0, cssClass1, GenerateReadHtml, view, currentRow, setDataRowDelegate, countChilds, countChilds, 0);
     }
     else
     {
         GenerateHtmlInMultipleRow(sb, cssClass, cssClass, GenerateReadHtml);
     }
 }