Ejemplo n.º 1
0
        public TagBuilder Render()
        {
            var td = new TagBuilder("td");

            td.Attributes.Add("style", $"text-align: center; {_parentContext.ButtonColumnStyle}");
            td.Attributes.Add("class", _parentContext.ButtonColumnClass);

            foreach (var tableButton in _parentContext.TableButtons)
            {
                var a = new TagBuilder("a");
                a.Attributes.Add("title", tableButton.Title);
                a.Attributes.Add("class", tableButton.Class);
                a.Attributes.Add("style", tableButton.Style);
                a.Attributes.Add("onclick", tableButton.OnClick);
                a.InnerHtml.SetHtmlContent($"<i class=\"{tableButton.IconClass}\"></i>&nbsp;");

                var link = "";
                if (string.IsNullOrEmpty(tableButton.CustomLink))
                {
                    a.Attributes.Add("target", tableButton.Target);
                    link  = $"/{tableButton.AspController ?? _parentContext.AspController}/{tableButton.AspAction ?? _parentContext.AspAction}/?";
                    link += $"returnUrl={_parentContext.ReturnUrl}";

                    // other parameters
                    foreach (var route in tableButton.Routes)
                    {
                        // replace ColumnName for ColumnValue
                        link += $"&{route.Key.Replace("asp-route-", "")}={_model.GetType().GetProperties().First(x => x.Name ==  route.Value).GetValue(_model)}";
                    }
                }
                else
                {
                    a.Attributes.Add("target", tableButton.CustomLinkTarget);
                    link = tableButton.CustomLink + (tableButton.CustomLink.Contains("?") ? "" : "?");

                    // other parameters
                    foreach (var route in tableButton.Routes)
                    {
                        // replace ColumnName for ColumnValue
                        link += $"&{route.Key.Replace("asp-route-", "")}={_model.GetType().GetProperties().First(x => x.Name == route.Value).GetValue(_model)}";
                    }
                }

                a.Attributes.Add("href", link);
                td.InnerHtml.AppendHtml(a);
                td.InnerHtml.AppendHtml("&nbsp;");
            }

            return(td);
        }
Ejemplo n.º 2
0
 public override void Process(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context, Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
 {
     Microsoft.AspNetCore.Mvc.IUrlHelper           urlHelper = urlHelperFactory.GetUrlHelper(ViewContext);
     Microsoft.AspNetCore.Mvc.Rendering.TagBuilder result    = new Microsoft.AspNetCore.Mvc.Rendering.TagBuilder("div");
     for (int i = 1; i <= PageModel.TotalPages; i++)
     {
         Microsoft.AspNetCore.Mvc.Rendering.TagBuilder tag = new Microsoft.AspNetCore.Mvc.Rendering.TagBuilder("a");
         PageUrlValues["productPage"] = i;
         tag.Attributes["href"]       = urlHelper.Action(PageAction, PageUrlValues);
         if (PageClassesEnabled)
         {
             tag.AddCssClass(PageClass);
             tag.AddCssClass(i == PageModel.CurrentPage ? PageClassSelected : PageClassNormal);
         }
         tag.InnerHtml.Append(i.ToString());
         result.InnerHtml.AppendHtml(tag);
     }
     output.Content.AppendHtml(result.InnerHtml);
 }
Ejemplo n.º 3
0
 public TagBuilder(string tagName)
 {
     _tagBuilder = new Microsoft.AspNetCore.Mvc.Rendering.TagBuilder(tagName);
     Attributes  = _tagBuilder.Attributes;
 }
        /// <summary>
        /// Render table header
        /// </summary>
        /// <returns></returns>
        public TagBuilder Render()
        {
            if (!_parentContext.RowsSettings.ShowHeader)
            {
                return(new TagBuilder("span"));
            }

            var output = new TagBuilder("thead");
            var tr     = new TagBuilder("tr");

            // Get First Model item
            object model = ((IList)_parentContext.Model)[0];

            foreach (var tc in _parentContext.TableColumns)
            {
                if (!tc.Visible)
                {
                    continue;
                }

                var th = new TagBuilder("th");
                th.Attributes.Add("class", tc.HeaderClass);
                th.Attributes.Add("style", tc.HeaderStyle);
                th.Attributes.Add("onclick", tc.OnClick);

                if (_parentContext.SortSettings.AllowSort && !tc.NoSort)
                {
                    // inser as routes sortOrder and sortDirection
                    var a = new TagBuilder("a");

                    a.InnerHtml.SetHtmlContent(RenderCaption(model, tc));

                    // generate link href
                    var link = $"/{_parentContext.AspController}/{_parentContext.AspAction}/?";


                    link += $"searchString={_parentContext.SearchSettings.SearchString}";
                    link += $"&sortOrder={tc.SpecialSort ?? tc.AspFor}";
                    link += $"&sortDirection={(_parentContext.SortSettings.SortOrder == tc.SpecialSort || _parentContext.SortSettings.SortOrder == tc.AspFor ? (_parentContext.SortSettings.SortDirection == "desc" ? "asc" : "desc") : "asc")}";
                    link += $"&page={_parentContext.PaginationSettings.CurrentPage}";
                    link += $"&returnUrl={_parentContext.ReturnUrl}";

                    // other parameters
                    foreach (var route in tc.Routes)
                    {
                        link += $"&{route.Key.Replace("asp-route-", "")}={route.Value}";
                    }

                    a.Attributes.Add("href", link);

                    if (_parentContext.SortSettings.SortOrder == tc.SpecialSort || _parentContext.SortSettings.SortOrder == tc.AspFor)
                    {
                        th.InnerHtml.AppendHtml($"<i class=\"fa fa-sort-alpha-{(_parentContext.SortSettings.SortDirection == "desc" ? "desc" : "asc")} pull-right\" style=\"padding: 3px 3px 0 0;\"></i>&nbsp;");
                    }
                    th.InnerHtml.AppendHtml(a);
                }
                else
                {
                    // mostra somente os captions, sem link
                    th.InnerHtml.SetHtmlContent(RenderCaption(model, tc));
                }
                tr.InnerHtml.AppendHtml(th);
            }

            // Add Buttons Column
            if (_parentContext.TableButtons.Count > 0)
            {
                var th = new TagBuilder("th");
                th.Attributes.Add("style", $"text-align: center; {_parentContext.ButtonHeaderStyle}");
                th.Attributes.Add("class", _parentContext.ButtonHeaderClass);
                th.InnerHtml.SetHtmlContent(_parentContext.ButtonHeaderTitle);
                tr.InnerHtml.AppendHtml(th);
            }

            output.InnerHtml.AppendHtml(tr);

            return(output);
        }