我在DataGridView MouseDoubleClick中有一个事件,当我单击任何行时,我想从1列中接收一个值。
我的数据源来自WZ_DWS_SITO
类。我创建了一种从数据库中提取数据的方法:
public void getdata()
{
EntitiesSito db = new EntitiesSito();
var query = (from d in db.WZ_DWS_SITO
orderby d.WZ_DATA descending
group d by new { d.WZ, d.KUNNR, d.WZ_DATA } into grp
select new
{
grp.Key.WZ,
grp.Key.KUNNR,
grp.Key.WZ_DATA,
MATERIAL = grp.Count(),
}).ToList();
datagridview.ItemsSource = query;
}
下一步,当我单击行元素时,我想从1列中获取单元格值。
我尝试这个:
var wz = (datagridview.SelectedItem as WZ_DWS_SITO).WZ;
但是不起作用:/我收到一个错误消息:
The object reference has not been set to the instance of the object.
接下来我尝试:
WZ_DWS_SITO wka = (WZ_DWS_SITO)datagridview.SelectedItem;
我得到一个投影错误,直到最后我都不知道发生了什么:/
请帮助:)
答案 0 :(得分:0)
使用select new
关键字后,您将不再处理WZ_DWS_SITO
类,而是使用新的匿名关键字。
首先,为您的数据创建一个类:
public class GroupedData
{
public string WZ {get; set;}
public string KUNNR {get; set;}
public string WZ_DATA {get; set;}
public int MATERIAL {get; set;}
}
然后更改查询:
select new GroupedData()
{
WZ = grp.Key.WZ,
KUNNR = grp.Key.KUNNR,
DATA = grp.Key.WZ_DATA,
MATERIAL = grp.Count(),
}
并使用
GroupedData wka = (GroupedData)(datagridview.SelectedItem);