我有一个名为“ Tryout.sqlite”的数据库。我想在列表视图中显示sqlite。如果用户单击“ kelas 7”,则列表视图中显示的问题只有“ kelas 7”问题。
数据库:
码:
string path;
SQLite.Net.SQLiteConnection conn;
List<DBName> DB_TryoutList = new List<DBName>();
kelasDetail = e.ClickedItem as Kelas;
path = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "Tryout.sqlite");
conn = new SQLite.Net.SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), path);
if (kelasDetail.KelasList == "Kelas 7")
{
DB_TryoutList.Clear();
var query = conn.Table<DBName>();
string name = "";
foreach (var message in query)
{
if (message.Judul.ToLower().Contains("kelas 7 -") || message.Judul.ToLower().Contains("kelas 7-"))
{
name = message.Judul;
this.DB_TryoutList.Add(new DBName { ID = message.ID, Judul = name, Deskripsi = message.Deskripsi, Durasi = message.Durasi, JumlahSoal = message.JumlahSoal, Syarat = message.Syarat });
}
}
}
else if (kelasDetail.KelasList == "Kelas 9")
{
DB_TryoutList.Clear();
var query = conn.Table<DBName>();
string name = "";
foreach (var message in query)
{
if (message.Judul.ToLower().Contains("kelas 9 -") || message.Judul.ToLower().Contains("kelas 9-"))
{
name = message.Judul;
this.DB_TryoutList.Add(new DBName { ID = message.ID, Judul = name, Deskripsi = message.Deskripsi, Durasi = message.Durasi, JumlahSoal = message.JumlahSoal, Syarat = message.Syarat });
}
}
}
if (DB_TryoutList.Count > 0)
{
ListTryout.Visibility = Visibility.Visible;
this.ListTryout.ItemsSource = DB_TryoutList;
}
我有一个问题,就是当我单击“ kelas 7”时,显示的问题是“ kelas 7”,然后单击“ kelas 9”,问题仍然显示在“ kelas 7”中(如下所示)
怎么处理呢?
最佳答案
我认为问题是您使用的是List<DBName>
而不是ObservableCollection<DBName>
。当用户单击时,可以在列表中执行Clear
和Add
新项目,但是由于ListView
已经绑定到相同的实例,因此将其分配给ItemsSource
是无操作的。要解决此问题,您必须切换到使用ObservableCollection<DBName>
,因为这样会通知ListView
有关集合中的任何更改,或者您必须在每次单击后使用新的List<DBName>
实例。
关于c# - UWP-在特定条件下以 ListView 显示数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51871700/