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}; }
There are two types of data-binding in ASP.NET namely, simple data-binding and declarative data binding.
Definition. Displays the values of a single record from a data source using user-defined templates. The FormView control allows you to edit, delete, and insert records.
This is known as simple data binding or inline data binding. Simple data binding involves attaching any collection (item collection) which implements the IEnumerable interface, or the DataSet and DataTable classes to the DataSource property of the control.
The FormView control is used to display a single record at a time from a data source. When you use the FormView control, you create templates to display and edit data-bound values. The templates contain controls, binding expressions, and formatting that define the look and functionality of the form.
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)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With