【问题标题】:UWP - Display database in listview with certain conditionsUWP - 在特定条件下在列表视图中显示数据库
【发布时间】:2019-01-23 02:21:18
【问题描述】:

我有一个名为“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”中(如如下图) 如何处理?

【问题讨论】:

  • 你在哪里设置详细信息页面?似乎您只是获取了单击的项目,但没有将其分配给任何属性或任何控件(例如 Description.Text = kelasDetail.Deskripsi
  • 所有代码都在 private void tryoutSmpListView_ItemClick(object sender, ItemClickEventArgs e) 中,当用户点击“Kelas 7”按钮(kelasDetail.KelasList ==“Kelas 7”)时,它将显示“kelas 7”问题,当用户点击“kelas 9”(kelasDetail.KelasList ==“Kelas 9”)时,将只显示“kelas 9”问题。当用户点击“kelas 7”然后点击“kelas 9”时出现问题,然后显示“kelas 7”(应该是“kelas 9”)。同理,如果用户点击“kelas 9”再点击“kelas 7”,则显示“kelas 9”(假设为“kelas 7”)

标签: c# sqlite listview if-statement uwp


【解决方案1】:

我认为问题在于您使用的是List&lt;DBName&gt; 而不是ObservableCollection&lt;DBName&gt;。当用户单击时,您在列表中执行 ClearAdd 新项目,但是因为 ListView 已经绑定到同一个实例,所以将其分配给 ItemsSource 是无操作的。要解决此问题,您要么必须切换到使用ObservableCollection&lt;DBName&gt;,因为这样ListView 将收到有关集合中任何更改的通知,或者您必须在每次点击后使用List&lt;DBName&gt; 的新实例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-17
    • 2015-02-24
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    相关资源
    最近更新 更多