2011-05-03 43 views
6

que necesitan de obligar a GridView, estoy utilizando este código:Cómo enlazar gridview usando linq/Entity Framework?

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(); 
    } 

y conseguir de este error.

System.InvalidOperationException: secuencia contiene más de un elemento de

Puede alguien por favor dígame qué estoy doin mal?

+0

Creo que tendrá que convertirlo a ** ToList() ** para que funcione como DataSource para una vista de cuadrícula – V4Vendetta

+0

intenté la función ToList me da este error .. El origen de datos es un error no válido Educación física. Debe ser un IListSource, IEnumerable o IDataSource ELAPDBEntities db = new ELAPDBEntities(); var assetFinan = desde usted en db.AssetFinancings donde u.AppID == ID de aplicación seleccione u; if (assetFinan! = Null) { gvAssetFinance.DataSource = assetFinan.ToList(); gvAssetFinance.DataBind(); } – Kay

+0

U necesita obtener ToList cuando se lo asigna a ** pro ** – V4Vendetta

Respuesta

2

Compruebe Duplication y luego intente conectarlo.

He editado mi respuesta anterior con el fin de mostrar el código completo:

ProductDBEntities db = new ProductPDBEntities(); 
GridView1.DataSource = (from u in db.Products where u.PID == 1 select u).First(); 
GridView1.DataBind(); 
+1

gracias por eso ... pero estoy teniendo problemas para mostrar. Obteniendo error ... ¿puedes publicar tu código como enlazas la vista de cuadrícula? – Kay

+1

@Kay Actualizo mi respuesta, eche un vistazo –

+0

'First()' devuelve un objeto 'Product'. No creo que este objeto tenga un método 'ToList()', ¿o sí? – Slauma

0

En primer lugar, se podría verificar sus datos para ver si hay más de un producto con PID = 1.

En segundo lugar, puede utilizar el método .First() para asegurarse de obtener un solo resultado de la unión:

var pro = (from u in db.Products where u.PID == 1 select u).First(); 
+0

sí, hay múltiples registros que vienen, es lo que estoy usando gridview para vincular ... – Kay

0

yo creo que hay que hacer ToList() cuando añadir a 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(); 
} 

Nota: Como se trata de a GridView, tiene que tomar n cantidad de filas. No row limit.

0

almacenar la variable de objeto de texto y asignar el tipo de objeto como fuente de datos a la red

1

Este código puede ser útil:

gv.DataSource = (from u in db.Products .First(u=> u.PID==1)).ToList(); 

Si usted tiene una mesa y mesa de detalle puede utilizar éste:

gv.DataSource = (from a in context.tblorder.First(p => p.id == 19).tblorderdetail where a.ID == 19 select a).ToList(); 
Cuestiones relacionadas