public TWidget AddEqualityFilter <TWidget>(string field, string title = null, object options = null, Action <QuickFilterArgs <TWidget> > handler = null, Action <jQueryObject> element = null, Action <TWidget> init = null) where TWidget : Widget { if (quickFiltersDiv == null) { J("<div/>").AddClass("clear").AppendTo(toolbar.Element); quickFiltersDiv = J("<div/>").AddClass("quick-filters-bar").AppendTo(toolbar.Element); } var quickFilter = J("<div class='quick-filter-item'><span class='quick-filter-label'></span></div>") .AppendTo(quickFiltersDiv) .Children().Text(DetermineText(title ?? field, pre => pre + field) ?? "") .Parent(); var widget = Widget.Create <TWidget>( element: e => { if (!field.IsEmptyOrNull()) { e.Attribute("id", this.UniqueName + "_QuickFilter_" + field); } e.Attribute("placeholder", " "); e.AppendTo(quickFilter); if (element != null) { element(e); } }, options: options, init: init); submitHandlers += () => { var request = (ListRequest)view.Params; request.EqualityFilter = request.EqualityFilter ?? new JsDictionary <string, object>(); var value = EditorUtils.GetValue(widget); bool active = Script.IsValue(value) && !string.IsNullOrEmpty(value.ToString()); if (handler != null) { var args = new QuickFilterArgs <TWidget> { Field = field, Request = request, EqualityFilter = request.EqualityFilter, Value = value, Active = active, Widget = widget, Handled = true }; handler(args); quickFilter.ToggleClass("quick-filter-active", args.Active); if (!args.Handled) { request.EqualityFilter[field] = value; } } else { request.EqualityFilter[field] = value; quickFilter.ToggleClass("quick-filter-active", active); } }; widget.Change(e => { this.QuickFilterChange(e); }); return(widget); }
public static TWidget Create <TWidget>(Action <jQueryObject> initElement, object options = null) where TWidget : Widget { return(Widget.Create <TWidget>(initElement, options)); }