我目前将行复制到一个空的数据表并绑定那个,但肯定有更好的方法...
您不需要绑定数据表 - 您只需要像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();