locked
search splitapp sampledatasource RRS feed

  • General discussion

  • hello guys i need help in this problem, i want to search and retrieve data on windows 8 not 8.1 for the splitApp SampleDataSource.

    this is the code in my searchResultsPage.

    using SplitApp.Data;
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using Windows.ApplicationModel.Activation;
    using Windows.Foundation;
    using Windows.Foundation.Collections;
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Controls.Primitives;
    using Windows.UI.Xaml.Data;
    using Windows.UI.Xaml.Input;
    using Windows.UI.Xaml.Media;
    using Windows.UI.Xaml.Navigation;
    
    // The Search Contract item template is documented at http://go.microsoft.com/fwlink/?LinkId=234240
    
    namespace SplitApp
    {
        /// <summary>
        /// This page displays search results when a global search is directed to this application.
        /// </summary>
        public sealed partial class SearchResultsPage : SplitApp.Common.LayoutAwarePage
        {
    
            private Dictionary<string, List<SplitPage>> _results = new Dictionary<string, List<SplitPage>>();
    
            public SearchResultsPage()
            {
                this.InitializeComponent();
            }
    
            /// <summary>
            /// Populates the page with content passed during navigation.  Any saved state is also
            /// provided when recreating a page from a prior session.
            /// </summary>
            /// <param name="navigationParameter">The parameter value passed to
            /// <see cref="Frame.Navigate(Type, Object)"/> when this page was initially requested.
            /// </param>
            /// <param name="pageState">A dictionary of state preserved by this page during an earlier
            /// session.  This will be null the first time a page is visited.</param>
            protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
            {
                var queryText = navigationParameter as String;
    
                // TODO: Application-specific searching logic.  The search process is responsible for
                //       creating a list of user-selectable result categories:
                //
                //       filterList.Add(new Filter("<filter name>", <result count>));
                //
                //       Only the first filter, typically "All", should pass true as a third argument in
                //       order to start in an active state.  Results for the active filter are provided
                //       in Filter_SelectionChanged below.
    
                var filterList = new List<Filter>();
                filterList.Add(new Filter("All", 0, true));
    
                var groups = new SampleDataSource.GetGroups("AllGroups");
                String query = queryText.ToLower();
                var all = new List<SplitPage>();
                _results.Add("All", all);
    
                foreach (var group in groups)
                {
    
                    var items = new List<SplitPage>();
                    _results.Add(group.Title, items);
    
                    foreach (var item in group.items)
                    {
                        if (items.Title.Tolower().contains(query) || item.Directions.Tolower().contains(query))
                        {
                            all.Add(item);
                            item.Add(item);
    
                        }
    
                    }
    
    
                    filterList.Add(new Filter(group.Title, items.Count, false));
    
                }
    
                filterList[0].Count = all.Count;
    
    
    
                // Communicate results through the view model
                this.DefaultViewModel["QueryText"] = queryText;
                this.DefaultViewModel["Filters"] = filterList;
                this.DefaultViewModel["ShowFilters"] = filterList.Count > 1;
            }
    
            /// <summary>
            /// Invoked when a filter is selected using the ComboBox in snapped view state.
            /// </summary>
            /// <param name="sender">The ComboBox instance.</param>
            /// <param name="e">Event data describing how the selected filter was changed.</param>
            void Filter_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
                // Determine what filter was selected
                var selectedFilter = e.AddedItems.FirstOrDefault() as Filter;
                if (selectedFilter != null)
                {
                    // Mirror the results into the corresponding Filter object to allow the
                    // RadioButton representation used when not snapped to reflect the change
                    selectedFilter.Active = true;
    
                    // TODO: Respond to the change in active filter by setting this.DefaultViewModel["Results"]
                    //       to a collection of items with bindable Image, Title, Subtitle, and Description properties
                 //   var searchValue = (string)this.DefaultViewModel["QueryText"];
                  //  this.DefaultViewModel["Results"] = new List<SampleDataItem>(SampleDataSource.Search(searchValue));
    
                    // Ensure results are found
                    object results;
                    ICollection resultsCollection;
                    if (this.DefaultViewModel.TryGetValue("Results", out results) &&
                        (resultsCollection = results as ICollection) != null &&
                        resultsCollection.Count != 0)
                    {
                        VisualStateManager.GoToState(this, "ResultsFound", true);
                        return;
                    }
                }
    
                // Display informational text when there are no search results.
                VisualStateManager.GoToState(this, "NoResultsFound", true);
            }
    
            /// <summary>
            /// Invoked when a filter is selected using a RadioButton when not snapped.
            /// </summary>
            /// <param name="sender">The selected RadioButton instance.</param>
            /// <param name="e">Event data describing how the RadioButton was selected.</param>
            void Filter_Checked(object sender, RoutedEventArgs e)
            {
                // Mirror the change into the CollectionViewSource used by the corresponding ComboBox
                // to ensure that the change is reflected when snapped
                if (filtersViewSource.View != null)
                {
                    var filter = (sender as FrameworkElement).DataContext;
                    filtersViewSource.View.MoveCurrentTo(filter);
                }
            }
    
            /// <summary>
            /// View model describing one of the filters available for viewing search results.
            /// </summary>
            private sealed class Filter : SplitApp.Common.BindableBase
            {
                private String _name;
                private int _count;
                private bool _active;
    
                public Filter(String name, int count, bool active = false)
                {
                    this.Name = name;
                    this.Count = count;
                    this.Active = active;
                }
    
                public override String ToString()
                {
                    return Description;
                }
    
                public String Name
                {
                    get { return _name; }
                    set { if (this.SetProperty(ref _name, value)) this.OnPropertyChanged("Description"); }
                }
    
                public int Count
                {
                    get { return _count; }
                    set { if (this.SetProperty(ref _count, value)) this.OnPropertyChanged("Description"); }
                }
    
                public bool Active
                {
                    get { return _active; }
                    set { this.SetProperty(ref _active, value); }
                }
    
                public String Description
                {
                    get { return String.Format("{0} ({1})", _name, _count); }
                }
            }
    
            private void OnItemClick(object sender, ItemClickEventArgs e)
            {
                //Navigate to the Page on which the show was clicked
                this.Frame.Navigate(typeof(SplitPage));
            }
        }
    }
    

    can you help me please, excuse my english its not my native language.

    Thursday, October 31, 2013 1:49 PM

All replies

  • I'm not sure what you are looking for. Can you please explain in more detail what you are having trouble with? Where is your code failing? What is the expected result and how does it differ from the actual result?
    Friday, November 1, 2013 3:03 AM
    Moderator
  • hello, i want to be able to search through my SampleDataSource, this is the code i am using in my SearchResultsPage.cs and its not working.

    i have not modified the SampleDataSource that is generated automatically when you create a new SplitApp Project.

    all i want is to be able to search through this static data.

    any ideas how i can achieve that ?

    Friday, November 1, 2013 2:05 PM
  • What do you mean by searching through the datasource? Is your question about how to write a search routine?

    --Rob

    Friday, November 8, 2013 4:37 AM
    Moderator