2016-04-25 9 views
0

Wenn ich eine Listbox (listBoxobj) auf 'Page1' habe, die Elemente von einer lokalen SQLite DB bindet, wie bekomme ich die neueste Element ID von einer anderen Seite (Seite2 zum Beispiel). Im Moment habe ich die folgenden Methoden:Wie bekomme ich das neueste Listenfeld von einer anderen Seite? Windows Phone 8

Seite1:

private void listBoxobj_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    if (listBoxobj.SelectedIndex != -1) 
    { 
      Refueling listitem = listBoxobj.SelectedItem as Refueling; 
      NavigationService.Navigate(new Uri("/View/EditRefuelingPage.xaml?SelectedContactID=" + listitem.Id, UriKind.Relative)); 
    } 
} 

Seite 2:

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    Selected_ContactId = int.Parse(NavigationContext.QueryString["SelectedContactID"]); 
    currentrefuel = Db_Helper.ReadRefuel(Selected_ContactId); 
} 

Diese Methode ruft ReadRefuel() aus der DataBaseHelper Klasse

public Refueling ReadRefuel(int refuelid) 
{ 
    using (var dbConn = new SQLiteConnection(App.DB_PATH)) 
    { 
     var existingrefuel = dbConn.Query<Refueling>("select * from Refueling where Id =" + refuelid).FirstOrDefault(); 
     return existingrefuel; 
    } 
} 

I benötigen Sie einen anderen Weg, um die neueste Artikel-ID zu erhalten (ohne in der Listbox darauf zu klicken). Ich habe versucht, eine zusätzliche Methode in meiner CRUID Klasse macht die neueste ID mit ihm zu bekommen:

 public Refueling GetLatestID() 
    { 
      using (var dbConn = new SQLiteConnection(App.DB_PATH)) 
      { 
      var latestID = dbConn.Query<Refueling>("select Id from Refueling").Last(); 
      return latestID; 
      } 
    } 

Gehen Sie dann wie folgt vor:

   int latestID = Convert.ToInt32(Db_Helper.GetLatestID()); 
       lastRefueling = Db_Helper.ReadRefuel(latestID); 
       oldMileage = Convert.ToDouble(lastRefueling.Mileage); 

, bekam aber eine Ausnahme: Eine Ausnahme des Typs ‚System .InvalidCastException‘aufgetreten in mscorlib.ni.dll wurde aber in Benutzercode

Antwort

0

Eigentlich mit int latestID = Convert.ToInt32(Db_Helper.GetLatestID()); ich habe ein Objekt vom Typ Betankungs nicht behandelt, so hatte ich von ihm wie dies das Element Id zu nehmen: lastRefueling = Db_Helper.ReadRefuel(latestID.Id);