C# 选择新添加的行-DataGridView和BindingSource
我正在向绑定到DataGridView的BindingSource添加新行C# 选择新添加的行-DataGridView和BindingSource,c#,winforms,datagridview,sql-server-ce,bindingsource,C#,Winforms,Datagridview,Sql Server Ce,Bindingsource,我正在向绑定到DataGridView的BindingSource添加新行 source.AddNew(); 在此之后,使用BindingSource获取新添加的行,并在其排序时返回DataGridView中的下一行 ROW "A" ROW "B" <- myBindingSource.AddNew(); ROW "C" 而不是整张桌子 myTableAdapter.Update(myDataSet.myTable); 另外,我希望在插入后在DataGridV
source.AddNew();
在此之后,使用BindingSource获取新添加的行,并在其排序时返回DataGridView中的下一行
ROW "A"
ROW "B" <- myBindingSource.AddNew();
ROW "C"
而不是整张桌子
myTableAdapter.Update(myDataSet.myTable);
另外,我希望在插入后在DataGridView中选择这个新添加的行
在某种程度上可能吗?可能吗?我会说
是
这里有一个与之相关的例子:(在Joel的论坛上)不知道它是最好的解决方案,但例如,它看起来比iterate更好
DataRowView drv = (DataRowView)source.AddNew();
grupoTableAdapter.Update(drv.Row);
grupoBindingSource.Position = grupoBindingSource.Find("ID", drv.Row.ItemArray[0]);
您已经确定了实现此目标的一种方法。另一种方法是完全忽略UI:
foreach (DataRow r in myTable.AsEnumerable().Where(x => x.RowState == DataRowState.Added))
{
myTableAdapter.Update(r);
}
当然,这会对表中所有添加的行(而不是刚刚添加的行)调用
Update
,因此,如果您遇到一些疯狂的情况,即您有两种不同的方式向表中添加新行,它将不起作用。将DataGridView中的事件用于此任务:
private void RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
this.Rows[e.RowIndex].Selected = true;
}
将新添加的行标记为选中行。从Oliver Friedrich的答案扩展而来,当使用设计器中显示的控件属性创建函数时,该函数将如下所示:
private void drv_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
drv.Rows[e.RowIndex].Selected = true;
}
同样的问题,它使DataGridView绑定到相应地选择新添加的行,即使任何列已排序。是的,但它会迭代,并且不会在视图中选择新添加的行。无论如何,在某些情况下可能会有所帮助。谢谢你的帮助。
private void drv_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
drv.Rows[e.RowIndex].Selected = true;
}