Reputation: 83
I need to bind GridView
, I am using this code:
ProductDBEntities db = new ProductPDBEntities();
var pro = from u in db.Products where u.PID == 1 select u;
if (pro != null)
{
GridView1.DataSource = pro;
GridView1.DataBind();
}
and getting this error.
System.InvalidOperationException: Sequence contains more than one element
Can somebody please tell me what am I doin wrong?
Upvotes: 8
Views: 61967
Reputation: 21
ProductDBEntities ctx = new ProductDBEntities ();
var q1 = ctx.Products.Where(x => x.PID == 1).ToList();
GridView1.DataSource = q1;
GridView1.DataBind();
I try it. It's work.
Upvotes: 0
Reputation: 11397
I think you have to do ToList()
when to add to DataSource
:
ProductDBEntities db = new ProductPDBEntities();
var pro = from u in db.Products where u.PID == 1 select u;
if (pro != null)
{
GridView1.DataSource = pro.ToList();
GridView1.DataBind();
}
Note: As it is a GridView
, has to take n number of rows. No row limit
.
Upvotes: 0
Reputation: 12610
Check Duplication
and then try to bind it.
I have edited my last answer in order to display the complete code :
ProductDBEntities db = new ProductPDBEntities();
GridView1.DataSource = (from u in db.Products where u.PID == 1 select u).First();
GridView1.DataBind();
Upvotes: 3
Reputation: 1
Store the variable to object type and assign the object type as datasource to grid
Upvotes: 0
Reputation: 11
This code may be helpful:
gv.DataSource = (from u in db.Products .First(u=> u.PID==1)).ToList();
If you have a table and table detail can use this one:
gv.DataSource = (from a in context.tblorder.First(p => p.id == 19).tblorderdetail where a.ID == 19 select a).ToList();
Upvotes: 1
Reputation: 7201
First, you might check your data to see if there's more than one product with PID = 1.
Second, you can use the .First() method to make sure you get only one result for binding:
var pro = (from u in db.Products where u.PID == 1 select u).First();
Upvotes: 0