在C#asp.net中,将数据表的一行绑定到detailsview的最简单方法是什么?

在C#asp.net中,将数据表的一行绑定到detailsview的最简单方法是什么?,c#,asp.net,C#,Asp.net,我目前将该行复制到一个空数据表并绑定该数据表,但肯定有更好的方法…是的,这是最简单的方法:) 嗯,如果你只想显示一个字段,你可以使用输出参数,但是如果你在一个details中显示多个字段,请查看它!这是最简单的方法。您不需要绑定数据表,只需要列表/枚举之类的东西。例如,如果您知道行号: DataRowView row = dt.DefaultView[1]; // second row detailsView1.DataSource = new DataRowView[] {row}; deta

我目前将该行复制到一个空数据表并绑定该数据表,但肯定有更好的方法…

是的,这是最简单的方法:)


嗯,如果你只想显示一个字段,你可以使用输出参数,但是如果你在一个details中显示多个字段,请查看它!这是最简单的方法。

您不需要绑定数据表,只需要列表/枚举之类的东西。例如,如果您知道行号:

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");
}
与:


选择数据表后,对其进行过滤会更简单?回到Web表单会让我想起它们是多么痛苦。我很高兴我搬到了MVC。
detailsView1.DataSource = row.ForBinding();
detailsView1.DataBind();