UWP-在特定条件下以列表视图显示数据库

时间:2018-08-16 07:24:32

标签: c# sqlite listview if-statement uwp

我有一个名为“ Tryout.sqlite”的数据库。我想在列表视图中显示sqlite。如果用户单击“ kelas 7”,则列表视图中显示的问题只有“ kelas 7”问题。 数据库: Database

代码:

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”中(如如下所示) Picture 1 Picture 2 如何处理?

1 个答案:

答案 0 :(得分:1)

我认为问题在于您使用的是List<DBName>而不是ObservableCollection<DBName>。当用户单击时,您会在列表中进行ClearAdd个新项目,但是由于ListView已绑定到同一实例,因此将其分配给ItemsSource是不可行的。同上要解决此问题,您必须切换到使用ObservableCollection<DBName>,因为这样ListView将收到有关集合中任何更改的通知,或者您必须在每次使用List<DBName>之后使用新实例点击。