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); } }
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); } }