【问题标题】:Get primary key value of selected row item in DataGrid using WPF使用 WPF 获取 DataGrid 中选定行项的主键值
【发布时间】:2013-10-14 23:18:48
【问题描述】:

我有一个DataGrid,绑定到数据库表customer

我需要从DataGrid中选定行的数据库表中选择主键ID值。

怎么做?请帮忙..

【问题讨论】:

  • 希望这个问题很清楚!
  • 你在使用ORM 框架吗?实体框架? NHibernate?
  • 直到现在我还没有使用任何框架......我只是使用 wpf 控件制作数据库(sqlite)驱动的应用程序......
  • 上传您如何将网格绑定到数据库的代码
  • sqlitecon.Open(); string Query = "Select Card_Number,Clients_Title,Address_Current,Phone_Number,Mobile_Number from Customer_New "; SQLiteCommand createCommand = new SQLiteCommand(Query, sqlitecon); createCommand.ExecuteNonQuery(); SQLiteDataAdapter dataAdp = new SQLiteDataAdapter(createCommand); DataTable dt = new DataTable("Customer_New"); dataAdp.Fill(dt); datagrid_cindex.ItemsSource = dt.DefaultView; dataAdp.Update(dt); sqlitecon.Close();

标签: wpf wpfdatagrid advanceddatagrid dojox.grid.datagrid


【解决方案1】:

您可以在选择语句中添加ID

string Query = "Select ID,Card_Number,Clients_Title,Address_Current,Phone_Number,Mobile_Number from Customer_New "; 

由于您要隐藏 ID 列,并且您的列是自动生成的,因此请注册到网格的 AutoGeneratingColumn 事件

datagrid_cindex.AutoGeneratingColumn += OnAutoGenetingColumns;

OnAutoGenetingColumns,隐藏ID栏

private void OnAutoGenetingColumns(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    if (e.Column.Header.ToString() == "ID")
        e.Column.Visibility = System.Windows.Visibility.Collapsed;
}

当您想检索所选行的 ID 时,请使用:

var selectedRow = datagrid_cindex.SelectedItem as DataRowView;
var id = selectedRow["ID"];

希望对你有帮助

【讨论】:

  • 在旁注中我必须说你真的应该使用一些 ORM 框架。将 UI 直接绑定到数据库是一种非常紧密的耦合,您通常希望避免这种耦合...
  • 谢谢.....这是 100% 的工作......你能和我分享一些很好的教程或视频教程的链接,用于从头到尾学习 ORM 框架......
  • 我使用NHibernateFluentNHibernate 配置为ORMThis 是一个很好的入门教程。如果我的帖子回答了您的问题,请将其标记为已回答。谢谢你:)
  • 考虑到大多数网格提供的实际行属性是 PK 或行 PK 名称的全局属性,这似乎非常笨拙。
  • @ProfK 但是只有在使用EFORM 等时才会出现这种情况。目前尚不清楚OP 使用的是什么数据绑定机制。
猜你喜欢
  • 2011-04-24
  • 2016-10-13
  • 2016-08-11
  • 1970-01-01
  • 2014-12-04
  • 1970-01-01
  • 2017-08-18
  • 2015-06-12
相关资源
最近更新 更多