private static void SetServiceLookupParams(EditorTypeAttribute editorTypeAttr, Dictionary <string, object> editorParams)
        {
            if (!(editorTypeAttr is ServiceLookupEditorAttribute sle) || sle.ItemType == null)
            {
                return;
            }

            if (!editorParams.ContainsKey("service"))
            {
                editorParams["service"] = ServiceLookupEditorAttribute.AutoServiceFor(sle.ItemType);
            }

            if (sle.ItemType.IsSubclassOf(typeof(Row)) &&
                !sle.ItemType.IsAbstract &&
                (!editorParams.ContainsKey("idField") ||
                 !editorParams.ContainsKey("textField") ||
                 (!editorParams.ContainsKey("includeColumns") &&
                  !editorParams.ContainsKey("columnSelection"))))
            {
                try
                {
                    var rowInstance = Activator.CreateInstance(sle.ItemType) as Row;
                    if (rowInstance is IIdRow idRow &&
                        !editorParams.ContainsKey("idField"))
                    {
                        var idField = ((Field)idRow.IdField);
                        editorParams["idField"] = idField.PropertyName ?? idField.Name;
                    }

                    if (!editorParams.ContainsKey("textField"))
                    {
                        var nameField = RowExtensions.GetNameField(rowInstance, false);
                        if (!ReferenceEquals(nameField, null))
                        {
                            editorParams["textField"] = nameField.PropertyName ??
                                                        nameField.Name;
                        }
                    }

                    if (!editorParams.ContainsKey("includeColumns") &&
                        !editorParams.ContainsKey("columnSelection"))
                    {
                        editorParams["includeColumns"] = rowInstance.GetFields()
                                                         .Where(x => x.GetAttribute <LookupIncludeAttribute>() != null)
                                                         .Select(x => x.PropertyName ?? x.Name)
                                                         .ToArray();
                    }
                }
                catch
                {
                }
            }
        }
        public ReportListGridBuilder(HtmlHelper htmlHelper)
        {
            _helper    = htmlHelper;
            _modelType = typeof(T);
            _editor    = _modelType.GetCustomAttribute <EditorTypeAttribute>();
            var factory = new WidgetFactory(htmlHelper);

            _builder = factory.Grid <T>();

            // Render our actual grid
            CreateGrid();
        }