Nächsten Datensatz anzeigen lassen XML parsing Nächsten Datensatz anzeigen lassen XML parsing
Danke Danke:  0
Ergebnis 1 bis 2 von 2
  1. Hi,
    ich arbeite mit einer XML Datei und lese diese Datei beim Start aus und binde Sie in eine Liste in der die Überschrift angezeigt wird. Klickt man auf eine dieser Überschrift, dann kommt man auf eine DetailsPage.xaml, die einmal die Überschrift und den Spruch anzeigt. Das klappt auch alles super. Nun aber zu meiner Frage : Wie kann ich einen vorwärts und rückwärts button integrieren, der zwischen den einzelnen Datensätzen hin und herspringt und in einer Schleife läuft bis der Nutzer wieder in die Liste zurückspringt?

    Hier der Code für die MainPage.cs :

    Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using Microsoft.Phone.Controls;
    using System.Xml.Linq;
    using Microsoft.Phone.Tasks;
    
    namespace _99_Redewendungen
    {
        public partial class MainPage : PhoneApplicationPage
        {
            public MainPage()
            {
                InitializeComponent();
                
                
                
    
                try
    
    
                {
                    IRedeRepository redeRepository = new XMLRedeRepository();
                    this.list.ItemsSource = redeRepository.GetRedeList();
                }
                catch (System.IO.IOException e)
                {
                    Console.WriteLine("Bitte starten Sie die App neu. Es ist ein Fehler aufgetreten", e.Message);
                } 
            }
    
            private void list_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
            {
                RedeData selectedItemData = (sender as ListBox).SelectedItem as RedeData;
                if(selectedItemData != null)
                {
                    NavigationService.Navigate(new  Uri(string.Format("/DetailsPage.xaml?parameter={0}",selectedItemData.SID),  UriKind.Relative));
                }
            }
            
                }
        
        public interface IRedeRepository
        {
            IList<RedeData> GetRedeList();
            RedeData GetRedeById(int id);
        }
        
        public class SimpleRedeRepository : IRedeRepository
        {
            private static List<RedeData> redeList = null;
            
            
            public IList<RedeData> GetRedeList()
            {
                return redeList;    
            }
            
            public RedeData GetRedeById(int id)
                
            {
                return redeList.FirstOrDefault(c => c.SID == id);    
            }
            
        }
        
        public class XMLRedeRepository : IRedeRepository
        {
            private static List<RedeData> redeList = null;
            
            static XMLRedeRepository()
            {
                
                XDocument loadedData = XDocument.Load("spruechle.xml");
                
                var data = from query in loadedData.Descendants("sprueche")
                    orderby query.Element("KID").Value ascending
                    where query.Element("KID").Value.Equals("1")
                    select new RedeData
                    {
                        SID = (int)query.Element("SID"),
                        Ueberschrift = (int)query.Element("KID"),
                        Spruchtext = (string)query.Element("Spruch"),
    };
                    redeList = data.ToList();
            }
    public IList<RedeData> GetRedeList()
            {
                return redeList;
            }
            
    public RedeData GetRedeById(int id)
            {
                return redeList.FirstOrDefault(c => c.SID == id);
            }}}
    Meine DetailsPage.cs :
    Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using Microsoft.Phone.Controls;
    using System.Xml.Linq;
    using Microsoft.Phone.Tasks;
    
    namespace _99_Redewendungen
    {
        public partial class DetailsPage : PhoneApplicationPage
        {
            public DetailsPage()
            {
                InitializeComponent();
            }
                
                protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
            {
                base.OnNavigatedTo(e);
                string parameter = this.NavigationContext.QueryString["parameter"];
    
                RedeData rede = null;
                int redeId = -1;
                if (int.TryParse(parameter, out redeId))
                {
                    IRedeRepository redeRepository = new XMLRedeRepository();
                    rede = redeRepository.GetRedeById(redeId);
                }
    
                this.DataContext = rede;
            }
    
                
                           
        }
    }
    Wie kann ich auf der DetailsPage.xaml nun mit einem Button zum nächsten Element springen und mit einem anderen zum vorhergehenden? Danke für eure Hilfe...

    P.S. Die XML Datei sieht in Auszügen so aus :

    Code:
     <spreche>
      <!-- Tabelle sprueche -->
        <sprueche>
            <SID>1</SID>
            <KID>KategorieNr</KID>
            <Spruch>Hallo, hier steht der Text</Spruch>
    0
     

  2. 30.10.2011, 15:11
    #2
    Also ich vermute mal stark, dass du schon weißt, dass du in der DetailsPage einfach den DataContext auf das nächste RedeData-Object setzen musst. Du könntest jetzt einfach GetRedeID mit der aktuellen RedeID + 1 aufrufen (so die aufsteigend und durchgehend sind) und wenn keine mehr kommt, dann fängst du halt mit der niedrigsten wieder an.

    Aber irgendwie musst du sowieso eine Reihenfolge definieren. Sonst kannst du per LINQ auch einfach die nächst größere holen (also Where(p => p.RedeId > currentRedeID) und aus dem Resultat dann halt die erste nehmen.
    0
     

Ähnliche Themen

  1. Datenverbrauch anzeigen lassen
    Von subaru.camui im Forum Windows Phone 7 Apps
    Antworten: 6
    Letzter Beitrag: 03.06.2012, 13:01
  2. Fotoposition anzeigen lassen?
    Von Badflex im Forum Windows Phone 7 Allgemein
    Antworten: 6
    Letzter Beitrag: 03.07.2011, 07:05
  3. Datenvolumen Anzeigen lassen
    Von peppi1986 im Forum Sony Ericsson Xperia X10 mini
    Antworten: 5
    Letzter Beitrag: 06.07.2010, 21:09
  4. Opera 10 beta 2; XML Parsing failed
    Von steve.jesse im Forum Samsung Omnia II
    Antworten: 0
    Letzter Beitrag: 14.12.2009, 19:44
  5. Termine der nächsten X-tage anzeigen?
    Von Sandro im Forum Plauderecke
    Antworten: 4
    Letzter Beitrag: 29.09.2003, 19:41

Besucher haben diese Seite mit folgenden Suchbegriffen gefunden:

wp7 xml parsing

wp7 xml parsen

windows phone xml linq

windows phone xml

windows phone 7 xml

wp7 selecteditem auslesen

wp7 xml parser

windows phone 7 xml parser

windows phone 7 parsing xml

xml windows phone

Android xml einlesen

xml auslesen windows mobile7

windows phone 7 System.Xmlwindowsphone.com apps parsenxml parsing windows phonexml mit windows phone lesenxml parsing windows phone xdocument parsewp7 daten in datei schreiben parsewindows phone xml datei lesenmit windows phone xml auslesenwp7 parsing rss feedparse xml wp7xml verarbeiten windows phone 7xml parser windows phonewindows phone xml daten

Stichworte