我对应该是简单的东西迷失了。 我在3个表之间有Master / Detail / Detail关系,master是控件集,并且与第一个细节一起正常工作,这个细节是第二个细节的主人。
Master-> Detail(Master)D1 ---> Detail D2
D1绑定到datagridview,D2也绑定到datagridview, 常见情况当您从主DataGridView中选择一行时,详细信息DataGridView会填充与所选行相关的列。并且此工作很好,但是如果我在主数据网格中有多行并尝试更改它们之间的选择,则第二个gridview的设计将崩溃并且所有行均消失,并且在尝试单击保存时我得到的索引必须为非负数enter image description here
我正在将.net 4.6和nettires与Codesmith生成器一起使用。
绑定功能
public void SetActiveBindingByActiveControl(Control ctrl)
{
BindingSource bsSource = null;
if (ctrl.GetType() == typeof(AdvancedDataGridView))
bsSource = (BindingSource)((AdvancedDataGridView)ctrl).DataSource;
else if (ctrl.GetType() == typeof(SmartDataGidView))
bsSource = (BindingSource)((SmartDataGidView)ctrl).DataSource;
else
{
PropertyInfo pi = ctrl.GetType().GetProperty("DataBindings");
if (pi != null)
{
ControlBindingsCollection coll = (ControlBindingsCollection)pi.GetValue(ctrl, null);
if (coll.Count > 0)
bsSource = (BindingSource)coll[0].DataSource;
}
}
SetActiveBindingByBindingSource(bsSource);
}
任何建议!!!