public FilterPanel(IEnumerable <T> records, Func <string, Func <T, bool> > predicate) { var txtSearch = new SearchBox(); var refreshPanel = new RefreshPanel(new[] { txtSearch }, () => { var searchText = txtSearch.Text.Trim(); var linq = records; if (!string.IsNullOrEmpty(searchText)) { linq = linq.Where(predicate(searchText)); } if (linq.Any()) { return(new EntityGrid <T>(linq).Render()); } else { return("No matching records."); } }); VisualTree.Add(Layout.Vertical(txtSearch, refreshPanel)); }
public object Render(Blade blade) { var searchBox = new SearchBox(); var refreshContainer = new RefreshPanel(new[] { searchBox }, () => { return(new Menu( _options.Where(e => e.Label.StartsWith(searchBox.Text)).Select(e => new MenuButton(e.Label, (_) => { _onSelect(e); })).ToArray() )); }); return(new HeaderPanel( Layout.Fill().Middle().Add(searchBox, "1fr").Horizontal(), refreshContainer )); }