Kay
Kay

Reputation: 83

How to bind gridview using linq/Entity Framework?

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

Answers (6)

I solve like this:

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

anishMarokey
anishMarokey

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

Nasser Hadjloo
Nasser Hadjloo

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

Azeem
Azeem

Reputation: 1

Store the variable to object type and assign the object type as datasource to grid

Upvotes: 0

atefeNaeni
atefeNaeni

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

Cylon Cat
Cylon Cat

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

Related Questions