Привязать строку в LongListSelector из базы данных MySQL в Windows Phone 8

Я новичок в Windows phone 8 esp при использовании LongListSelector. Я пытаюсь получить список из базы данных MySQL и привязать его к LongListSelector. В моем коде отображается только диалоговое окно MessageBox вместо получения списка. В чем может быть проблема. Или я поместил свой код для получения списка в неправильный метод. Пожалуйста помоги..

Строка для привязки к LongListSelector: f1, имя ListLongselector = ListCompanies

public partial class MainPage : PhoneApplicationPage
    {
        // Constructor
        public MainPage()
        {
            InitializeComponent();

            // Set the data context of the LongListSelector control to the sample data
            DataContext = App.ViewModel;

            // Sample code to localize the ApplicationBar
            //BuildLocalizedApplicationBar();
        }

        // Load data for the ViewModel Items
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            //if (!App.ViewModel.IsDataLoaded)
            //{
            //    App.ViewModel.LoadData();
            //}

            string url = "http://localhost/taxi/fetch_nrb.php";
            WebClient webclientmenu = new WebClient();
            webclientmenu.DownloadStringCompleted += webclientmenu_DownloadStringCompleted;
            webclientmenu.DownloadStringAsync(new Uri(url));
        }

        // Handle selection changed on LongListSelector
        private void MainLongListSelector_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            //// If selected item is null (no selection) do nothing
            //if (MainLongListSelector.SelectedItem == null)
            //    return;

            //// Navigate to the new page
            //NavigationService.Navigate(new Uri("/DetailsPage.xaml?selectedItem=" + (MainLongListSelector.SelectedItem as ItemViewModel).ID, UriKind.Relative));

            //// Reset selected item to null (no selection)
            //MainLongListSelector.SelectedItem = null;


        }

        void webclientmenu_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            //throw new NotImplementedException();
            try
            {
                string list = e.Result;
                string[] final = list.Split('#');
                string f1 = final[0];

                for (int i = 0; i < f1.Length; i++)
                {
                    ListCompanies.ItemsSource.Add(f1[i]);
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Check Your Internet Connectivity and try again later.\n No Network Connection", "Network Error!", MessageBoxButton.OK);

            }
        }

person Muli    schedule 11.03.2013    source источник
comment
Пока вы отображаете сообщение о том, что есть проблема с сетевым подключением, но действительно ли это исключение?   -  person Matt Lacey    schedule 12.03.2013
comment
Как предложил @MattLacey, проверьте настоящее исключение. Это WebException? Если это так, скорее всего, ваш эмулятор не имеет подключения к Интернету.   -  person Shulhi Sapli    schedule 03.04.2013


Ответы (2)


Насколько я понимаю, вы пытаетесь отобразить один символ для каждого элемента списка?

Если да, я предлагаю заменить цикл foreach на:

ListCompanies.ItemsSource = f1;

если вы хотите отобразить каждую строку в окончательном списке с одной строкой на элемент:

ListCompanies.ItemsSource = final;

Вы столкнулись с нереализованным исключением, поскольку свойство ItemsSource назначено созданному вами списку.

person Patrick Sachet    schedule 16.04.2013

Вы должны изменить этот код;

// Load data for the ViewModel Items
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            //if (!App.ViewModel.IsDataLoaded)
            //{
            //    App.ViewModel.LoadData();
            //}

            string url = "http://localhost/taxi/fetch_nrb.php";
            WebClient webclientmenu = new WebClient();
            webclientmenu.DownloadStringCompleted += webclientmenu_DownloadStringCompleted;
            webclientmenu.DownloadStringAsync(new Uri(url));
        }

с этим ;

protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            if (!App.ViewModel.IsDataLoaded)
            {
                App.ViewModel.LoadData();
            }
        }

И сделайте событие загрузки с событием «LongListSelector_Loaded». Для этого перейдите на свою сторону xaml, щелкните селектор длинного списка, щелкните события и дважды щелкните поле «Загружено». Тогда иди и напиши свои просьбы там, вот так;

 private void MainLongListSelector_Loaded(object sender, RoutedEventArgs e)
        {
            string url = "http://localhost/taxi/fetch_nrb.php";
            WebClient webclientmenu = new WebClient();
            webclientmenu.DownloadStringCompleted += webclientmenu_DownloadStringCompleted;
            webclientmenu.DownloadStringAsync(new Uri(url));
        }

удачи.

person Kuthay Gumus    schedule 06.06.2013