2014-04-13 32 views
0

我有以下問題。我是從我的數據庫填入此代碼的幫助下一個GridView:C#GridView。如何獲取選定項目的值?

private async void CreateDatabase() 
{ 
    SQLiteAsyncConnection conn = new SQLiteAsyncConnection("people"); 

    var query = conn.Table<Person>(); 
    var result = await query.ToListAsync(); 

    foreach (var item in result) 
    { 
     GridView1.Items.Add(new GridViewItem { Background = new SolidColorBrush(Colors.Green), Content = item.Name, Width = 200, Height = 200 }); 
    } 
} 

我刪除我的數據庫項目是這樣的:

private async void DeleteSelectedButton_Click(object sender, RoutedEventArgs e) 
{ 
    SQLiteAsyncConnection conn = new SQLiteAsyncConnection("people"); 
    var query = conn.Table<Person>().Where(x => x.Name == "123"); 
    var result = await query.ToListAsync(); 
    foreach (var item in result) 
    { 
     await conn.DeleteAsync(item); 
    } 
} 

我的問題是:我可以綁定有什麼具體的價值添加到在第一個代碼塊中創建的GridView1.Item,以便稍後可以檢索它,以便在此項目被選中時刪除數據庫中的實體? (即1.填充GridView時,我希望爲每個GridView.Item分配一些值,以便綁定到來自數據庫的ID; 2.我希望能夠通過右鍵單擊並選擇該項目時檢索該值刪除按鈕(這樣就不會刪除其名稱中包含「123」的數據庫實體,而是綁定了ID的數據庫實體)任何幫助都將非常感謝!

PS對不起,我的複雜句子

+0

爲什麼不用'Content = item'和DataTemplate來代替? – Aybe

回答

0

OK)這裏的交易),我想通了:

private async void RemoveButton_Click(object sender, RoutedEventArgs e) 
{ 
    GridViewItem selection = (GridViewItem)GridView1.SelectedItem; 
    string ToBeDeleted = selection.Content.ToString(); 
    GridView1.Items.Remove(selection); 
    SQLiteAsyncConnection conn = new SQLiteAsyncConnection("people"); 
    var query = conn.Table<Person>().Where(x => x.Name == ToBeDeleted); 
    var result = await query.ToListAsync(); 
    foreach (var item in result) 
    { 
     await conn.DeleteAsync(item); 
    } 
    MessageDialog msgDialog = new MessageDialog("Category " + ToBeDeleted + " is deleted"); 
    msgDialog.ShowAsync(); 
} 
2

如果你的網格只顯示一個字符串,就可以得到GridView中值是這樣的:

string value = Gridview1.SelectedItem as string; 
+0

您的建議中的'value'返回'Windows.UI.Xaml.Controls.GridViewItem'。我希望它返回在我的第一個問題 –

+0

中在第一個代碼塊中獲取的任何「Content = item.Name」。因此,比如下所示的Cal: ItemClass myitem = GridView1.SelectedItem as ItemClass; string vantedvalue = myitem.name; –

相關問題