我在说这个:
我不知何故需要获取该行的数据库信息。
我的程序全部搜索,所以我不确定它是如何工作的。但我需要的是,从bindingNavigator窗口中查看活动行的主键(id),然后从该id运行查询以从另一个具有与主键相同的外键的表中获取一些数据
因此左边会有一个导航框来浏览数据库中的行,然后每次更改活动行时,右边的3个文本框将从另一个表中获取相关数据(与外部相关联)表1中主键的键。
我已经尝试了一段时间,例如:
MessageBox.Show(bindingNavigatorPnositionItem.GetCharIndexFromPosition);
我意识到这不起作用,我不确定我在做什么,因为如果有人在搜索,这根本不会有用,因为它不是主键。我可以读取用户更改页面时显示的“id”字段中的数据 - 但如何检查用户是否更改了页面?
答案 0 :(得分:2)
我不确定你想要实现什么,但是如果你想获得当前记录的ID或Primary Key
,并且每当位置发生变化时它都会更新,那么你可以可能是这样的:
在您的Form_Load
中,您可以初始化PositionChanged
EventHandler
:
this.bindingNavigator1.BindingSource.PositionChanged += new EventHandler(BindingSource_PositionChanged);
然后,事件处理程序将获得您想要的当前列或Primary Key
。我们只说你的主键是CustomerID
:
void BindingSource_PositionChanged(object sender, EventArgs e)
{
DataRowView currRow = (DataRowView)bindingNavigator1.BindingSource.Current;
// You could use currRow["CustomerID"].ToString() value below to filter now the related table that has the Foreign Key
MessageBox.Show(currRow["CustomerID"].ToString());
}