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>"); } }
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>"); }