我正在创建一个WPF应用程序,它在DataGrid中显示来自单个SQL数据库表的记录。该应用程序还包括一个TreeView,用于过滤记录以及三个按钮:
我被指示使用代码而不是MVVM,因此我的DataGrid绑定发生在各种事件上,例如Window_Loaded," TreeViewItem" _Selected等等......一切正常。至于按钮,第一个是直接的,因为它删除了表中的所有记录,所以我只是发送一个带有TSQL命令的字符串。第二个按钮基本相同,但它正在执行存储过程。第三个按钮和此应用程序的最后一个部分是我被困住的地方。
显然我需要"匹配"在DataGrid中选择的行到数据库表中的行,我可以使用记录ID来执行,但我面临的挑战是我无法弄清楚如何从所选项列表中提取记录ID。我已经在互联网上搜索了近一个星期了,几乎所有我发现的信息都引用了DataGridView,根据XAML不支持。我创建了以下方法
private void GetSelectedRecordIds()
{
var selectedRows = licenseGrid.SelectedItems;
}
这将返回带有索引的IList,每个索引显示该行中的值(下面的本地人截图)。
这是正确的方法吗? 如果是这样,从" Id"中提取我需要的价值的最佳方法是什么?列?
答案 0 :(得分:1)
假设您通过将其ItemsCollection绑定到自定义对象的集合来填充DataGrid,您可以将IList转换回强类型对象的IEnumerable,如下所示:
private void GetSelectedRecordIds()
{
IList selectedRows = (IList)licenseGrid.SelectedItems;
var stronglyTypedList = selectedRows.Cast<MyType>();
foreach (MyType m in stronglyTypedList)
{
int id = m.ID;
// do something with ID
}
}
如果您需要根据这些ID从数据库中删除其他帮助,请告诉我们......