DataGridView获取当前选定的对象

Oli*_*ich 40 c# datagridview winforms

我需要从da数据绑定DataGridView获取当前选定的对象.

我不需要当前所选单元格的对象,而是整个行所基于的对象,在这种情况下,BusinessObject属性将构成网格的列.

我可以查看DataSource,但它本身只是一个对象,可以是BindingSource或IBindingList或类似的东西 - 所以不容易标准化的方式来获取想要的对象.

在此之后需要检查businessObject以获取名为IsChanged的属性,并在绑定源选择下一个项目之前要求用户保存或放弃更改.因此,我必须找出DataGridView的RowValidating-Event中的当前对象,因为BindingSource不提供在更改发生之前停止更改的事件.请参阅此处了解众所周知的问题

谢谢阅读 ;-)

lep*_*pie 79

DataGridViewRow.DataBoundItem 包含它所绑定的"业务"对象.

  • 谢谢你正确地暗示我,有时人们应该放松一下而不是更加强烈地寻找... (4认同)

Kem*_*ran 7

这是我的代码把它放到你的Person类中

 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;
    }
Run Code Online (Sandbox Code Playgroud)

这是一个更新按钮点击

DataRow row = (dataGridView1.SelectedRows[0].DataBoundItem as DataRowView).Row;
Person selected = (Person)row;
Run Code Online (Sandbox Code Playgroud)