[英]C# - SQlite + Entity - Show items on a ListView
使用Visual Studio 2015並通過SQlite + Entity學習ORM(WPF應用程序)
我的數據庫包含以下字段:ID和ShipType
我可以用ShypType字段填充listView:
private void button_Click(object sender, RoutedEventArgs e)
{
List<string> shipList = new List<string>();
using (var db = new ImperialFleetDBEntities())
{
shipList = (from g in db.ShipsType select g.ShipType).ToList();
db.Dispose();
}
listView.Items.Clear();
foreach (string str in shipList)
{
listView.Items.Add(str);
}
}
但是我不知道如何也顯示ID字段(此示例中的g.ID)
在此鏈接中, C#ListView顯示解決方案正在使用ListViewSubItems
但是如果我鍵入listView。 我沒有任何SubItems選項
解決方案已有5年歷史了,也許那是個問題??
最簡單的方法可能是:
private void button_Click(object sender, RoutedEventArgs e)
{
using (var db = new ImperialFleetDBEntities())
{
listView.Items.Clear();
foreach(var item in (from g in db.ShipsType select new { ID = g.ID, ShipType = g.ShipType }))
{
listView.Items.Add(item)
}
}
}
這應該以正確的方式填充listView,並確保EF不會跟蹤這些新對象。
如果願意,您可以創建完整的類,例如ViewModel for listView包含所需的字段,然后選擇它們:
foreach(var item in (from g in db.ShipsType select new NewShipType { ID = g.ID, ShipType = g.ShipType }))
{
listView.Items.Add(item)
}
或使用構造函數(如果您使用一個)。
使用單獨的ViewModel,您當然可以在列表對象之間使用它們,並將它們清除並將其添加到listView.Items中,而匿名對象則不可能。
順便說一下,您沒有,也許您不應該在using
子句中編寫db.Dispose()
,因為using
正是要確保內部對象已被處置-您不能在未實現的對象上使用using
IDisposable
接口。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.