我目前将行复制到一个空的数据表并绑定那个,但肯定有更好的方法......
答案 0 :(得分:5)
您不需要绑定数据表 - 您只需要像list / enumerable这样的东西。例如,如果您知道行号:
DataRowView row = dt.DefaultView[1]; // second row
detailsView1.DataSource = new DataRowView[] {row};
detailsView1.DataBind();
请注意,我们必须使用DataRowView
(而不是DataRow
)来获取仅运行时属性(即来自列的数据)。如果你有DataRow
,这种方法可以很容易地包含在实用程序方法中,例如扩展方法:
public static DataRowView[] ForBinding(this DataRow row)
{
foreach (DataRowView rowView in row.Table.DefaultView)
{
if (ReferenceEquals(rowView.Row, row))
{
return new DataRowView[] { rowView };
}
}
throw new ArgumentException("Row not found in the default view", "row");
}
使用:
detailsView1.DataSource = row.ForBinding();
detailsView1.DataBind();
答案 1 :(得分:1)
是的,这是最简单的方法:)
恕我直言,如果你只想显示1个字段,你可能会使用输出参数,但是如果你在详细信息视图中显示多个字段,那就是最简单的方法。