public static MvcHtmlString CheckBoxList(this HtmlHelper helper, string name, IEnumerable <SpecialSelectListItem> items, IEnumerable <SpecialSelectListItem> parentItems, IDictionary <string, object> checkboxHtmlAttributes, bool readOnly = false, CheckBoxLisLayout layout = CheckBoxLisLayout.SimpleHorizontal, SelectionMode selectionMode = SelectionMode.Multiple)
        {
            StringBuilder output = new StringBuilder();

            bool noParent = false;

            if (parentItems == null)
            {
                parentItems = items.Where(o => o.ParentId == null);
                noParent    = parentItems.Count() == items.Count();
            }

            if (selectionMode == SelectionMode.Single && layout != CheckBoxLisLayout.Chosen)
            {
                throw new Exception("Single Mode Selection just works in Chosen layout currently! Ask the Greewf owner(s) to implement it if you need it in other layout! ;) ");
            }

            switch (layout)
            {
            case CheckBoxLisLayout.SimpleRaw:
                BuildRawFieldSetCheckboxList(name, items, parentItems, checkboxHtmlAttributes, readOnly, layout, output);
                break;

            case CheckBoxLisLayout.SimpleHorizontal:
            case CheckBoxLisLayout.SimpleVertical:
                if (noParent)
                {
                    BuildSimpleCheckboxList(name, items, parentItems, checkboxHtmlAttributes, readOnly, layout, output);
                }
                else
                {
                    BuildFieldSetCheckboxList(name, items, parentItems, checkboxHtmlAttributes, readOnly, layout, output);
                }
                break;

            case CheckBoxLisLayout.Tabular:
                BuildTabularCheckboxList(helper, name, items, parentItems, checkboxHtmlAttributes, readOnly, output);
                break;

            case CheckBoxLisLayout.Tree:
                BuildTreeCheckboxList(helper, name, items, parentItems, checkboxHtmlAttributes, readOnly, output);
                break;

            case CheckBoxLisLayout.PanelBar:
            case CheckBoxLisLayout.PanelBarAllOpened:
                BuildPanelBaredCheckboxList(helper, name, items, parentItems, checkboxHtmlAttributes, readOnly, output, layout);
                break;

            case CheckBoxLisLayout.Chosen:
                BuildChosenList(helper, name, items, parentItems, checkboxHtmlAttributes, readOnly, output, selectionMode);
                break;
            }

            return(new MvcHtmlString(output.ToString()));
        }
 public static MvcHtmlString CheckBoxList(this HtmlHelper helper, string name, IEnumerable <SpecialSelectListItem> items, IDictionary <string, object> checkboxHtmlAttributes, bool readOnly = false, CheckBoxLisLayout layout = CheckBoxLisLayout.SimpleHorizontal, SelectionMode selectionMode = SelectionMode.Multiple)
 {
     return(CheckBoxList(helper, name, items, items.Where(o => o.ParentId == null), checkboxHtmlAttributes, readOnly, layout, selectionMode));
 }
 public static MvcHtmlString CheckBoxList(this HtmlHelper helper, string name, IEnumerable <SpecialSelectListItem> items, IEnumerable <SpecialSelectListItem> parentItems, object checkboxHtmlAttributes, bool readOnly = false, CheckBoxLisLayout layout = CheckBoxLisLayout.SimpleHorizontal, SelectionMode selectionMode = SelectionMode.Multiple)
 {
     return(CheckBoxList(helper, name, items, parentItems, new RouteValueDictionary(checkboxHtmlAttributes), readOnly, layout, selectionMode));
 }
        public static MvcHtmlString CheckBoxListFor <TModel, TProperty>(this HtmlHelper <TModel> helper, System.Linq.Expressions.Expression <Func <TModel, TProperty> > expression, IEnumerable <SpecialSelectListItem> items, IEnumerable <SpecialSelectListItem> parentItems, IDictionary <string, object> checkboxHtmlAttributes, bool readOnly = false, CheckBoxLisLayout layout = CheckBoxLisLayout.SimpleHorizontal, SelectionMode selectionMode = SelectionMode.Multiple)
        {
            string name = helper.GetFullPropertyName(expression, false);

            return(CheckBoxList(helper, name, items, parentItems, checkboxHtmlAttributes, readOnly, layout, selectionMode));
        }
 public static MvcHtmlString CheckBoxList(this HtmlHelper helper, string name, IEnumerable <SpecialSelectListItem> items, bool readOnly = false, CheckBoxLisLayout layout = CheckBoxLisLayout.SimpleHorizontal, SelectionMode selectionMode = SelectionMode.Multiple)
 {
     return(CheckBoxList(helper, name, items, null, readOnly, layout, selectionMode));
 }
        private static void BuildPanelBaredCheckboxList(HtmlHelper helper, string name, IEnumerable <SpecialSelectListItem> items, IEnumerable <SpecialSelectListItem> parentItems, IDictionary <string, object> checkboxHtmlAttributes, bool readOnly, StringBuilder output, CheckBoxLisLayout layout)
        {
            if (checkboxHtmlAttributes == null)
            {
                checkboxHtmlAttributes = new Dictionary <string, object>();
            }
            if (!checkboxHtmlAttributes.ContainsKey("height"))
            {
                checkboxHtmlAttributes.Add("height", "500px");
            }

            var panelBar = helper.Telerik().PanelBar().Name(name).HtmlAttributes(checkboxHtmlAttributes).SelectedIndex(0).ExpandMode(layout == CheckBoxLisLayout.PanelBarAllOpened ? PanelBarExpandMode.Multiple : PanelBarExpandMode.Single).ToComponent();

            foreach (var parentItem in GetParentItems(parentItems))
            {
                var panelBarItem = new PanelBarItem()
                {
                    Text = parentItem.Text
                };
                panelBar.Items.Add(panelBarItem);
                if (layout == CheckBoxLisLayout.PanelBarAllOpened)
                {
                    panelBarItem.Expanded = true;
                }

                foreach (var item in GetChidItems(items, parentItem))
                {
                    panelBarItem.Items.Add(new PanelBarItem()
                    {
                        Text = BuildCheckBox(name, checkboxHtmlAttributes, readOnly, item), Encoded = false
                    });
                }
            }

            output.Append(panelBar.ToHtmlString());
        }
 public static MvcHtmlString CheckBoxListFor <TModel, TProperty>(this HtmlHelper <TModel> helper, System.Linq.Expressions.Expression <Func <TModel, TProperty> > expression, IEnumerable <SpecialSelectListItem> items, IEnumerable <SpecialSelectListItem> parentItems, bool readOnly = false, CheckBoxLisLayout layout = CheckBoxLisLayout.SimpleHorizontal, SelectionMode selectionMode = SelectionMode.Multiple)
 {
     return(CheckBoxListFor(helper, expression, items, parentItems, null, readOnly, layout, selectionMode));
 }
        private static void BuildSimpleCheckboxList(string name, IEnumerable <SpecialSelectListItem> items, IEnumerable <SpecialSelectListItem> parentItems, IDictionary <string, object> checkboxHtmlAttributes, bool readOnly, CheckBoxLisLayout layout, StringBuilder output)
        {
            output.Append("<table>");
            bool isVerticalLayout = layout == CheckBoxLisLayout.SimpleVertical;

            if (!isVerticalLayout)
            {
                output.Append("<tr>");
            }

            foreach (var item in items)
            {
                if (isVerticalLayout)
                {
                    output.Append("<tr><td>" + BuildCheckBox(name, checkboxHtmlAttributes, readOnly, item) + "</td></tr>");
                }
                else
                {
                    output.Append("<td>" + BuildCheckBox(name, checkboxHtmlAttributes, readOnly, item) + "</td>");
                }
            }

            if (!isVerticalLayout)
            {
                output.Append("</tr>");
            }
            output.Append("</table>");
        }
        private static void BuildRawFieldSetCheckboxList(string name, IEnumerable <SpecialSelectListItem> items, IEnumerable <SpecialSelectListItem> parentItems, IDictionary <string, object> checkboxHtmlAttributes, bool readOnly, CheckBoxLisLayout layout, StringBuilder output)
        {
            foreach (var parentItem in GetParentItems(parentItems))
            {
                output.AppendFormat("<fieldset><legend>{0}</legend>", parentItem.Text);

                foreach (var item in GetChidItems(items, parentItem))
                {
                    output.Append(BuildCheckBox(name, checkboxHtmlAttributes, readOnly, item));
                }

                output.Append("</fieldset>");
            }
        }
Example #10
0
        private static void BuildFieldSetCheckboxList(string name, IEnumerable <SpecialSelectListItem> items, IEnumerable <SpecialSelectListItem> parentItems, IDictionary <string, object> checkboxHtmlAttributes, bool readOnly, CheckBoxLisLayout layout, StringBuilder output)
        {
            output.Append("<table>");
            bool isVerticalLayout = layout == CheckBoxLisLayout.SimpleVertical;

            if (!isVerticalLayout)
            {
                output.Append("<tr>");
            }

            foreach (var parentItem in GetParentItems(parentItems))
            {
                if (isVerticalLayout)
                {
                    output.Append("<tr>");
                }
                output.AppendFormat("<td valign='top'><fieldset><legend>{0}</legend>", parentItem.Text);

                foreach (var item in GetChidItems(items, parentItem))
                {
                    output.Append(BuildCheckBox(name, checkboxHtmlAttributes, readOnly, item));
                }

                output.Append("</fieldset></td>");
                if (isVerticalLayout)
                {
                    output.Append("</tr>");
                }
            }

            if (!isVerticalLayout)
            {
                output.Append("</tr>");
            }
            output.Append("</table>");
        }