コード例 #1
0
        protected override void BuildRenderTree(RenderTreeBuilder builder)
        {
            base.BuildRenderTree(builder);

            builder.OpenRegion(this.GetHashCode());

            if (this.ChildContent != null)
            {
                RenderFragment child() =>
                (builder2) =>
                {
                    builder2.AddContent(56, this.ChildContent);
                };

                builder.OpenComponent <CascadingValue <MGrid <T> > >(4);
                builder.AddAttribute(207, "Value", this);
                builder.AddAttribute(208, "ChildContent", child());
                builder.CloseComponent();
            }


            RenderFragment childMain() =>
            (builder2) =>
            {
                builder2.OpenElement(216, "div");
                builder2.AddAttribute(217, "class", "m-grid-container");
                builder2.AddMultipleAttributes(218, AdditionalAttributes);


                builder2.OpenElement(221, "div");
                builder2.AddAttribute(222, "class", "m-btn-toolbar");
                builder2.AddAttribute(223, "role", "toolbar");

                if (ToolbarItems != ToolbarItem.None)
                {
                    builder2.OpenElement(227, "div");
                    builder2.AddAttribute(228, "class", "m-btn-group mr-2");
                    builder2.AddAttribute(229, "role", "group");

                    if (EnableAdding && ToolbarItems.HasFlag(ToolbarItem.Add))
                    {
                        builder2.OpenElement(233, "button");
                        builder2.AddAttribute(234, "class", "m-btn m-btn-primary");
                        builder2.AddAttribute(235, "onclick", EventCallback.Factory.Create <MouseEventArgs>(this, OnToolbarAdd));
                        builder2.AddContent(236, (MarkupString)$"<i class=\"fa fa-plus\"></i> {L["Add"]}");
                        builder2.CloseElement();        // button
                    }

                    if (EnableEditing && ToolbarItems.HasFlag(ToolbarItem.Edit))
                    {
                        builder2.OpenElement(242, "button");
                        builder2.AddAttribute(243, "class", "m-btn m-btn-primary");
                        builder2.AddAttribute(244, "onclick", EventCallback.Factory.Create <MouseEventArgs>(this, OnToolbarEdit));
                        builder2.AddContent(245, (MarkupString)$"<i class=\"fa fa-edit\"></i> {L["Edit"]}");
                        builder2.CloseElement();        // button
                    }

                    if (EnableDeleting && ToolbarItems.HasFlag(ToolbarItem.Delete))
                    {
                        builder2.OpenElement(251, "button");
                        builder2.AddAttribute(252, "class", "m-btn m-btn-primary");
                        builder2.AddAttribute(253, "onclick", EventCallback.Factory.Create <MouseEventArgs>(this, OnToolbarRemove));
                        builder2.AddContent(254, (MarkupString)$"<i class=\"fa fa-trash-alt\"></i> {L["Delete"]}");
                        builder2.CloseElement();        // button
                    }

                    builder2.CloseElement();        // div
                }

                if (EnableFilterRow)
                {
                    builder2.OpenElement(263, "button");
                    builder2.AddAttribute(264, "class", "m-btn m-btn-primary m-btn-sm");
                    builder2.AddAttribute(265, "onclick", EventCallback.Factory.Create <MouseEventArgs>(this, OnToggleFilter));
                    builder2.OpenElement(266, "i");
                    builder2.AddAttribute(267, "class", "fas fa-filter");
                    builder2.CloseElement();        //i
                    builder2.AddContent(269, L["Filter"]);
                    builder2.CloseElement();        //button
                }


                builder2.CloseElement();        // div


                builder2.OpenElement(277, "table");


                if (HtmlTableClass != null)
                {
                    builder2.AddAttribute(282, "class", HtmlTableClass + (EnableEditing ? " m-clickable" : string.Empty) + (IsEditingRow ? " m-editing" : string.Empty));
                }
                else
                {
                    builder2.AddAttribute(286, "class", "m-grid m-grid-striped m-grid-bordered m-grid-hover" + (EnableEditing ? " m-clickable" : string.Empty) + (IsEditingRow ? " m-editing" : string.Empty));
                }

                if (FixedColumns)
                {
                    builder2.AddAttribute(291, "style", "table-layout: fixed;");
                }

                builder2.AddElementReferenceCapture(294, (__value) =>
                {
                    mTableReference = __value;
                });

                builder2.OpenElement(299, "thead");
                builder2.OpenElement(300, "tr");

                for (int i = 0; i < ColumnsList.Count; i++)
                {
                    IMGridColumn column = ColumnsList[i];

                    if (!column.ShouldRenderColumn)
                    {
                        continue;
                    }

                    builder2.OpenElement(309, "th");
                    builder2.AddAttribute(310, "data-identifier", column.Identifier);
                    builder2.AddMultipleAttributes(311, column.AdditionalAttributes);

                    if (FixedColumns)
                    {
                        var width = GetColumnWidth(i);
                        builder2.AddAttribute(315, "style", $"width: {width.ToString(CultureInfo.InvariantCulture)}px");
                    }

                    builder2.AddAttribute(318, "onclick", EventCallback.Factory.Create <MouseEventArgs>(this, (a) => OnColumnHeaderClick(column, a)));
                    builder2.AddAttribute(319, "scope", "col");

                    builder2.AddContent(321, (MarkupString)column.HeaderText);

                    if (EnableUserSorting)
                    {
                        var sortInstr = SortInstructions.FirstOrDefault(si => si.PropertyInfo.GetFullName() == column.Identifier);
                        if (sortInstr != null)
                        {
                            if (sortInstr.Direction == MSortDirection.Ascending)
                            {
                                builder2.AddContent(329, (MarkupString)"<i class=\"fa fa-arrow-down m-grid-header-icon\"></i>");
                            }

                            if (sortInstr.Direction == MSortDirection.Descending)
                            {
                                builder2.AddContent(332, (MarkupString)"<i class=\"fa fa-arrow-up m-grid-header-icon\"></i>");
                            }
                        }
                    }

                    builder2.CloseElement();        //th
                }

                builder2.CloseElement();        //tr
                builder2.CloseElement();        //thead

                builder2.AddMarkupContent(342, "\r\n");
                builder2.OpenElement(434, "tbody");

                if (DataCache == null)
                {
                    if (DataSource != null)
                    {
                        DataCache = GetIQueryable(DataSource as IQueryable <T>).ToArray();
                    }
                    else if (DataAdapter == null)
                    {
                        throw new InvalidOperationException("Please provide a " + nameof(DataSource) + " or " + nameof(DataAdapter));
                    }
                }

                if (IsFilterRowVisible)
                {
                    AddFilterRow(builder2);
                }

                if (DataCache != null)
                {
                    foreach (var entry in DataCache)
                    {
                        AddContentRow(builder2, entry, MGridAction.Edit);
                    }
                }

                if (NewValue != null)
                {
                    AddContentRow(builder2, NewValue, MGridAction.Add);
                }

                builder2.AddMarkupContent(24, "\r\n");
                builder2.CloseElement();        //tbody

                builder2.CloseElement();        // table
                builder2.AddMarkupContent(391, "\r\n");

                if (Pager != null)
                {
                    int pagecount = (int)Math.Ceiling(DataCountCache / (double)Pager.PageSize);

                    builder2.OpenComponent <MPager>(11);
                    builder2.AddAttribute(398, "CurrentPage", Pager.CurrentPage);
                    builder2.AddAttribute(399, "PageCount", pagecount);
                    builder2.AddAttribute(400, "OnPageChanged", EventCallback.Factory.Create <int>(this, OnPagerPageChanged));

                    builder2.AddAttribute(402, "ChildContent", (RenderFragment)((builder3) =>
                    {
                        builder3.AddMarkupContent(404, "\r\n\r\n    ");
                        builder3.OpenElement(405, "div");
                        builder3.AddAttribute(406, "class", "m-pagination-entry m-pagination-tools");
                        builder3.AddMarkupContent(407, "\r\n        ");

                        if (Pager.SelectablePageSizes != null)
                        {
                            builder3.OpenElement(411, "select");
                            builder3.AddAttribute(412, "class", "m-form-control");

                            builder3.AddAttribute(413, "onchange", EventCallback.Factory.Create <ChangeEventArgs>(this, OnPageSizeChange));

                            foreach (var entry in Pager.SelectablePageSizes)
                            {
                                builder3.OpenElement(418, "option");
                                builder3.AddAttribute(419, "value", entry);
                                builder3.AddContent(420, entry);
                                builder3.CloseElement();
                            }

                            builder3.AddMarkupContent(424, "\r\n");
                            builder3.CloseElement();        //select
                        }

                        builder3.AddMarkupContent(428, "\r\n");


                        builder3.AddMarkupContent(429, $"<span class=\"m-pagination-descr\">{string.Format(L["{0} entries of {1}"], DataCache?.Count, TotalDataCountCache)}</span>");

                        if (EnableExport)
                        {
                            builder3.OpenElement(435, "button");
                            builder3.AddAttribute(436, "class", "m-btn m-btn-secondary m-btn-icon m-btn-sm");
                            builder3.AddAttribute(437, "onclick", EventCallback.Factory.Create <MouseEventArgs>(this, OnExportClicked));
                            builder3.AddContent(438, (MarkupString)"<i class=\"fas fa-download\"></i>");
                            builder3.CloseElement();        // button
                        }

                        builder3.CloseElement();        //div
                    }
                                                                                ));

                    builder2.CloseComponent();
                }


                builder2.CloseElement();        //div
            };

            builder.AddContent(453, childMain());

            builder.CloseRegion();
        }