Select newly added Row - DataGridView and BindingSource

前端 未结 5 1643
眼角桃花
眼角桃花 2020-12-11 08:01

I\'m adding a new Row to a BindingSource that is Bound to a DataGridView

source.AddNew();

After this, use BindingSource to get the newly ad

相关标签:
5条回答
  • 2020-12-11 08:36

    Extending from Oliver Friedrich's answer, the function when created using the controls's property as shown in the designer will look like:

    private void drv_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
    {
        drv.Rows[e.RowIndex].Selected = true;
    } 
    
    0 讨论(0)
  • 2020-12-11 08:37

    You've already identified one way to accomplish this. Another way to accomplish it is to ignore the UI completely:

    foreach (DataRow r in myTable.AsEnumerable().Where(x => x.RowState == DataRowState.Added))
    {
        myTableAdapter.Update(r);
    }
    

    Of course, this calls Update on all added rows in the table, not the one that was just added, so if you have some crazy scenario where you have two different ways of adding new rows to the table it won't work.

    0 讨论(0)
  • 2020-12-11 08:41

    Is it possible? I would say yes.

    Here's an aricle related to it:
    DataGridView and BindingSource (on Joel's Forum)

    0 讨论(0)
  • 2020-12-11 08:48

    Use the events from the DataGridView like this for this task:

    private void RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
    {
        this.Rows[e.RowIndex].Selected = true;
    } 
    

    That marks the newly added row as the selected.

    0 讨论(0)
  • 2020-12-11 08:54

    Dont know id its the best solution but for instance looks better than iterate.

            DataRowView drv = (DataRowView)source.AddNew();
            grupoTableAdapter.Update(drv.Row);
            grupoBindingSource.Position = grupoBindingSource.Find("ID", drv.Row.ItemArray[0]);
    
    0 讨论(0)
提交回复
热议问题