問題:所以這在編碼論壇上并不是一個不常見的問題,但人們應用洗掉按鈕的方式似乎有多種,經過幾天的嘗試,我正在尋求有關我的方法的一些建議。
我有一個簡單的應用程式,它需要一些用戶輸入并使用它來計算假期天數。我設定了一個簡單的 SQLite 資料庫來處理新條目:
public class LeaveEntry
{
[PrimaryKey, AutoIncrement]
public int ID { get; set; }
public string Date { get; set; }
public string Hours { get; set; }
public string Days { get; set; }
}
然后我在這個類中設定資料庫連接并創建一些保存和洗掉方法:
public class Database
{
readonly SQLiteAsyncConnection _database;
public Database (string dbPath)
{
_database = new SQLiteAsyncConnection(dbPath);
_database.CreateTableAsync<LeaveEntry>().Wait();
}
public Task<List<LeaveEntry>> GetLeaveEntryAsync()
{
return _database.Table<LeaveEntry>().ToListAsync();
}
public Task<int> SaveLeaveEntry(LeaveEntry leaveEntry)
{
return _database.InsertAsync(leaveEntry);
}
public Task<int> DeleteLeaveEntry(LeaveEntry leaveEntry)
{
return _database.DeleteAsync(leaveEntry);
}
}
使用 SaveLeaveEntry 方法,我可以成功地將休假條目添加到另一個頁面上的串列視圖,但我無法洗掉它們。在此串列視圖頁面上,當用戶持有串列視圖項時,我添加了一個帶有洗掉按鈕的選單項。當他們選擇洗掉選單項時,我目前已將其設定為執行以下操作:
public void MenuItem_Clicked(object sender, EventArgs e)
{
LeaveEntry itemToDelete = ((sender as MenuItem).BindingContext as LeaveEntry);
// Unfinished code attempt
await App.Database.DeleteLeaveEntry(new LeaveEntry
{
ID = listView.SelectedItem.
});
}
在我看來,我試圖使用選定的專案參考從資料庫中提取該專案,但它什么也不做。我知道我在這里遺漏了一些簡單的東西,但我在這個問題上有點筋疲力盡。任何幫助表示贊賞。如果需要,可以提供更多代碼或資訊。
uj5u.com熱心網友回復:
在我看來,我試圖使用選定的專案參考從資料庫中提取該專案,但它只是什么都不做。
您應該使用當前持有的專案作為方法的引數,DeleteLeaveEntry而不是創建一個新專案。
請嘗試以下代碼:
LeaveEntry itemToDelete = ((sender as MenuItem).BindingContext as LeaveEntry);
App.Database.DeleteLeaveEntry(itemToDelete);
筆記:
此外,如果你不觸發事件ItemSelected你的listview,價值listView.SelectedItem會null。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/311406.html
