public IHtmlContent Render(ITableConfig <T> config, int entityCount) { List <TableNode> nodes = new List <TableNode>(); _config = config; _entityCount = entityCount; _containerId = _tableState.ContainerId; TableNode table = this.Table(); TableNode innerContainer = this.Container(nodes, table); if (_tableState.ContainerId != null) { KeyValuePair <string, ColumnConfig> column = _config.Columns.FirstOrDefault(c => c.Value.SortState.HasValue && c.Value.SortState != SortState.None && c.Key != _tableState.SortProp); // Reset sort state for any column that was initially sorted. if (column.Value != null) { column.Value.SortState = SortState.None; } } this.Caption(table); this.Header(table); this.Body(table); this.Footer(table); innerContainer.Element.InnerHtml.AppendHtml(string.Format(JsCode.Code, _containerId)); this.FilteringLinkTemplate(innerContainer); return(_nodeParser.Parse(nodes)); }
public TableRendererTest() { ITableNodeParser nodeParser = Substitute.For <ITableNodeParser>(); _tableState = new TableState { Filter = new Dictionary <string, string>(), Page = 1, PageSize = 3, SortProp = "SortProp", AscSort = true }; _tableConfig = Substitute.For <ITableConfig <TableEntity> >(); _tableConfig.Columns.Returns(new Dictionary <string, ColumnConfig>()); _tableConfig.Paging.Returns(new PagingConfig()); _tableConfig.Footer.Returns(new FooterConfig()); _tableConfig.Sorting.Returns(new SortingConfig()); _tableConfig.Update.Returns(new UpdateConfig { Url = "Url", BusyIndicatorId = "BusyId", Start = "start", Success = "success", Error = "error", }); _tableConfig.Paging.Returns(new PagingConfig()); nodeParser.Parse(Arg.Do <IEnumerable <TableNode> >(n => _nodes = n)).Returns(new HtmlString("Content")); _renderer = new TableRenderer <TableEntity>(_tableState, nodeParser); }