【问题标题】:C# GridView. How to get a value of a selected item?C# 网格视图。如何获取选定项目的值?
【发布时间】:2014-05-27 17:38:13
【问题描述】:

我有以下问题。我有一个 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 绑定到该项目的实体)。任何帮助将不胜感激!

附:对不起我的复杂句子。

【问题讨论】:

  • 为什么不用Content = item 和一个DataTemplate 来代替?

标签: c# gridview windows-8.1


【解决方案1】:

如果您的网格只显示一个字符串,您可以像这样获取 GridView 值:

string value = Gridview1.SelectedItem as string;

【讨论】:

  • value 在您的建议中返回 Windows.UI.Xaml.Controls.GridViewItem。我希望它返回它在我最初问题的第一个代码块中获得的 Content = item.Name
  • 所以,比 cal 像这样: ItemClass myitem = GridView1.SelectedItem as ItemClass;字符串vantedvalue = myitem.name;
【解决方案2】:

好的)这是交易)我想通了:

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();
}

【讨论】:

    猜你喜欢
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多