我有一个方法:
public void setResults(Documents[] doc)
{
//I call a method to set the columns
setColumns(doc[0].getColumnsToDisplay())
//Here i populate the DataGrid
foreach (Documents element in doc)
{
/dt is a datatable
DataRow dr = dt.NewRow();
foreach (string col in results[0].getColumnsToDisplay())
{
object val;
(element.getAttributes() as IDictionary<string, object>).TryGetValue(col, out val);
dr[col] = val.ToString();
}
dt.Rows.Add(dr);
}
gridSearchResults.DataSource = dt;
}
有没有办法存储&#34; doc&#34;每行参考?所以,如果我选择一行,我可以返回&#34; doc&#34;对象?寻找某种Tag
属性替代行或不同的东西。
答案 0 :(得分:1)
您应该使用DataGridView而不是DataGrid。我假设你试图在回发后获得该对象。
//DO NECESSARY NULL CHECKS!!!
DataRow row = (gridSearchResults.SelectedRows[0].DataBoundItem as DataRowView).Row;
Documents selected = (Documents)row;
答案 1 :(得分:1)
如果要在DataGridView
中显示对象列表,则无需使用DataTable
。您只需将列表设置为DataSource
的<{1}}:
DataGridView
然后,如果你想知道行后面的对象,你可以简单地使用public void setResults(Documents[] doc)
{
gridSearchResults.DataSource = doc;
}
的{{3}}属性并将其转换为你的对象类型:
DataGridViewRow
有关更多信息和样本,您可以看到:
如果您只想在var documents= (Documents)gridSearchResults.Rows[0].DataBoundItem;
中显示某些列,请按以下方式添加所需的列:
DataGridView