Dev GridControl 选择行及绑定/获取List对象

GridControl绑定List对象一般是为了获取焦点行时直接获得该行代表的List对象,或者为了实现嵌套表格,对第一中情况,起始不用绑定List,绑定DataTable也可以实现获取对应List对象

如果直接绑定List<T>对象,列标题就是T的各属性名,一旦转义(如Select(c => new { 查询条件 = c.queryString, 数量 = c.resAirlines.Count }).ToList();),就成了自定义对象,GetFocusedRow无法获取到原T对象

解决方法:(起始也适用于绑定的DataTable)

进行转义时,将原对象作为object也进行完整转义,如 var res = FlightBLL.queryPool.Select(c => new { obj=c, 查询条件 = c.queryString, 数量 = c.resAirlines.Count }).ToList(); 这里的obj=c就将完整对象转义成了obj

这样,即保留了原对象,也可灵活组织显示形式和列标题

绑定时,即可用List绑定,也可用DataTable绑定,如下面两种绑定方法都ok:

CmmFrm.BestFitGridViewColumnsWidth(gdcQuery, res, 0, true, false);

CmmFrm.BestFitGridViewColumnsWidth(gdcQuery, res.ToDataTable(), 0, true, false);

将obj列隐藏,gdvQuery.Columns[0].Visible = false;

取出选定行对象时,不能用GetFocusedRow了,而要用GetFocusedRowCellValue,如:

var row = gdvQuery.GetFocusedRowCellValue(gdvQuery.Columns[0]) as QUERY_CONDITION_CONTRAST;

取消当前选中行,但是无法取消初始绑定时的选择行

gdv_refer.FocusedRowHandle = -1;

//判断当前有无数据选中,若index<0,没有数据选中

int index= gdv_refer.GetFocusedDataSourceRowIndex() ;

//返回选中行的数据对象

DataRow dr= gdv_refer.GetFocusedDataRow();

//返回选中行数据实体

REFTAB reftab = gdv_refer.GetFocusedRow() as REFTAB;

//删除一行数据

gdv_refer.DeleteRow(gdv_refer.FocusedRowHandle);

//新增一行

DataRow dr = this.DataDetailSourceTable.Rows.Add(); //这是新增加了一行
dr["primary_key"] = ""; 

原文地址:https://www.cnblogs.com/mol1995/p/9255270.html