private void GeneratePagingTemplate() { if (_isPageable && string.IsNullOrWhiteSpace(_customPagingTemplateView)) { if (GridTemplate.Templates.ContainsKey(_pagingTemplateId)) { return; } var sb = new StringBuilder(); using (TextWriter writer = new StringWriter(sb)) { using (var wrappedHtmlHelper = new HtmlHelperWriterWrapped(_htmlHelper, writer)) { using (var template = _htmlHelper.Incoding().Template <PagingModel>()) { TagBuilder ul = new TagBuilder("ul"); ul.AddCssClass("pagination"); //sb.Append("<ul class=\"pagination\">"); using (var each = template.ForEach()) { using (each.Is(r => r.Active)) { var li = new TagBuilder("li"); var link = new TagBuilder("a"); link.MergeAttribute("href", "#!" + each.For(r => r.Page)); link.InnerHtml.AppendHtml(each.For(r => r.Text)); li.InnerHtml.AppendHtml(link); li.AddCssClass("active"); ul.InnerHtml.AppendHtml(li); } using (each.Not(r => r.Active)) { var li = new TagBuilder("li"); var link = new TagBuilder("a"); link.MergeAttribute("href", "#!" + each.For(r => r.Page)); link.InnerHtml.AppendHtml(each.For(r => r.Text)); li.InnerHtml.AppendHtml(link); ul.InnerHtml.AppendHtml(li); } } ul.WriteTo(writer, HtmlEncoder.Default); } } } GridTemplate.Templates.TryAdd(_pagingTemplateId, new IncodingResult.JsonData(true, sb.ToString(), null, HttpStatusCode.OK).ToJsonString()); } }
private void GenerateRowTemplate() { if (GridTemplate.Templates.ContainsKey(_templateId)) { return; } var sb = new StringBuilder(); using (TextWriter writer = new StringWriter(sb)) { using (var wrappedHtmlHelper = new HtmlHelperWriterWrapped(_htmlHelper, writer)) { using (var template = wrappedHtmlHelper.HtmlHelper.Incoding().Template <T>()) { using (var each = template.ForEach()) { var tbody = new TagBuilder("tbody"); foreach (var bodyAttr in this.TBodyAttrs) { tbody.MergeAttribute(bodyAttr.Key, bodyAttr.Value.Invoke(each).HtmlContentToString()); } var tr = new TagBuilder("tr"); if (this.RowAttributes != null) { tr.MergeAttributes(this.RowAttributes); } if (this.RowTemplateClass != null) { tr.AddCssClass(this.RowTemplateClass.Invoke(each).HtmlContentToString()); } foreach (var column in this._сolumnList) { var tdWidth = String.IsNullOrWhiteSpace(column.ColumnWidthPct) ? column.ColumnWidth : column.ColumnWidthPct; var td = new TagBuilder("td"); if (column.Expression != null) { if (column.IsRaw) { td.InnerHtml.Append("{{{" + column.Expression + "}}}"); } else { td.InnerHtml.Append("{{" + column.Expression + "}}"); } } if (column.Template != null) { td.InnerHtml.AppendHtml(column.Template.Invoke(each)); } if (column.ColumnAttributes != null) { td.MergeAttributes(column.ColumnAttributes); } if (!String.IsNullOrWhiteSpace(tdWidth) && (column.ColumnAttributes == null || !column.ColumnAttributes.ContainsKey("style"))) { td.MergeAttribute("style", "width:{0}{1};".F(tdWidth, String.IsNullOrWhiteSpace(column.ColumnWidthPct) ? "px" : "%")); } if (!column.IsVisible) { td.AddCssClass("hide"); } tr.InnerHtml.AppendHtml(td); } tbody.InnerHtml.AppendHtml(tr); if (this._nextRowList.Count > 0) { foreach (var row in this._nextRowList) { var trNext = new TagBuilder("tr"); if (row.MetaAttribute != null) { trNext.MergeAttributes(row.MetaAttribute(each).AsHtmlAttributes()); } List <string> classes = row.GetClasses(each); foreach (var cls in classes) { trNext.AddCssClass(cls); } if (this.RowAttributes != null) { foreach (var att in this.RowAttributes) { if (att.Key == "class") { trNext.AddCssClass(att.Value.ToString()); } } trNext.MergeAttributes(this.RowAttributes); } if (this.RowTemplateClass != null) { trNext.AddCssClass(this.RowTemplateClass.Invoke(each).HtmlContentToString()); } var innerHtml = row.Content.Invoke(each); trNext.InnerHtml.AppendHtml(innerHtml); var trNextString = trNext.HtmlContentToString(); if (row.HtmlAttributes != null) { trNextString = trNextString.Insert(3, " " + row.HtmlAttributes.Invoke(each).HtmlContentToString() + " "); } tbody.InnerHtml.AppendHtml(trNextString); } } tbody.WriteTo(writer, HtmlEncoder.Default); } } } } GridTemplate.Templates.TryAdd(_templateId, new IncodingResult.JsonData(true, sb.ToString(), null, HttpStatusCode.OK).ToJsonString()); }