I need to get the currently selected object from da databound DataGridView.
I do not need the object of the current selected cell, but the object on which the whole row is based, in this case a BusinessObject whos properties make the columns of the grid.
I could go over the DataSource, but that itself is just an object and can be a BindingSource or a IBindingList or something like that - so not easy standartized way to get the wanted object.
Behind that is the need to just check the businessObject for a property called IsChanged and ask the user to save or discard the changes, before the bindingsource selects the next item. Therefore I must find out the current object inside RowValidating-Event of the DataGridView, since the BindingSource does not offer an event to stop changing before change occurs.See here for the well known problem
Thanks for reading ;-)
To get the selected rows in a DataGridView controlUse the SelectedRows property. To enable users to select rows, you must set the SelectionMode property to FullRowSelect or RowHeaderSelect.
DataGridViewRow.DataBoundItem
contains the 'business' object it is bound to.
Here is my code put this into your Person class
public static explicit operator Person(DataRow dr) { Person p = new Person(); p.adi = dr.ItemArray[0].ToString(); p.id = Int32.Parse(dr.ItemArray[1].ToString()); p.soyadi = dr.ItemArray[2].ToString(); p.kartNo = dr.ItemArray[3].ToString(); p.dogumTarihi = DateTime.Parse( dr.ItemArray[4].ToString() ); p.adres = dr.ItemArray[5].ToString(); p.meslek = dr.ItemArray[6].ToString(); p.telefon = dr.ItemArray[7].ToString(); p.gsm = dr.ItemArray[8].ToString(); p.eposta = dr.ItemArray[9].ToString(); return p; }
and this is a update button click
DataRow row = (dataGridView1.SelectedRows[0].DataBoundItem as DataRowView).Row; Person selected = (Person)row;
You can also use this short code.
Person selected = dataGridView1.SelectedRows[0].DataBoundItem as Person;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With