Jamie Ide
Jamie Ide

Reputation: 49301

How do I bind an ASP.NET FormView to a single record?

The whole purpose of the ASP.NET FormView control is to display a single record at a time. So how do I bind it to a single record? It complains that

Data source is an invalid type. It must be either an IListSource, IEnumerable, or IDataSource.

I can wrap my object in a list if that's the only solution. In this application, the FormView is inside a user control and I'm retrieving the object in a public method, i.e. I'm not using a data source control. I'm not doing any 2-way data binding here either, I'm only using the FormView in this case to maintain a consistent look.

If I went by the book and bound a FormView to a data source that returned a list of records, would it actually retrieve all the records and just display only the selected record?

Here's what I ended up implementing in a utility class:

public static IEnumerable<T> WrapInEnumerable<T>(T item)
{
    return new T[] {item};
}

Upvotes: 25

Views: 13567

Answers (1)

Sani Huttunen
Sani Huttunen

Reputation: 24395

As the error message says, the DataSource object must implement IListSource, IEnumerable or IDataSource to work.

If you have an object av type A which do not implement one of the mentioned interfaces then you could as you say wrap your object in a list:

C#

var myDataSource = new List<A> {myObject};

VB.NET

Dim myDataSource As List(Of A)(myObject)

Upvotes: 19

Related Questions