【发布时间】:2016-04-25 20:22:10
【问题描述】:
如果我在“Page1”上有一个列表框(称为 listBoxobj),它绑定了来自本地 SQLite DB 的项目,我如何从另一个页面(例如 Page2)获取最新的项目 ID。目前我有以下方法:
第1页:
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));
}
}
第2页:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
Selected_ContactId = int.Parse(NavigationContext.QueryString["SelectedContactID"]);
currentrefuel = Db_Helper.ReadRefuel(Selected_ContactId);
}
此方法从 DataBaseHelper 类调用 ReadRefuel()
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;
}
}
我需要另一种方法来获取最新的项目 ID(无需在列表框中单击它)。我尝试在我的 CRUID 类中创建一种额外的方法来获取最新的 ID:
public Refueling GetLatestID()
{
using (var dbConn = new SQLiteConnection(App.DB_PATH))
{
var latestID = dbConn.Query<Refueling>("select Id from Refueling").Last();
return latestID;
}
}
然后执行以下操作:
int latestID = Convert.ToInt32(Db_Helper.GetLatestID());
lastRefueling = Db_Helper.ReadRefuel(latestID);
oldMileage = Convert.ToDouble(lastRefueling.Mileage);
,但出现异常:在 mscorlib.ni.dll 中发生“System.InvalidCastException”类型的异常,但未在用户代码中处理
【问题讨论】:
标签: c# windows-phone-8 listbox