Пример #1
0
        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));
        }
Пример #2
0
        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
                       ));
        }