The data source does not support server-side data paging.
Apesar de haber configurado las propiedades AllowPaging="true" del GridView, este mensaje te saca de las casillas y puedes equivocadamente sospechar que las expresiones Linq NO pueden enlazarse a un simple GridView.
var q = from item in Clients select item;
this._grid.DataSource = q;
Donde la variable Clients es una coleccion de datos, cualesquiera.
Sin embargo, al enlazar el objeto de estructura de datos inferida, es decir: q, sobre el DataSource del GridView, debe utlizar el metodo ToList()
this._grid.DataSource = q.ToList();
De esta manera superaras un inconveniente tecnico, que antes NO se habia experimentado, es decir en las versiones anteriores.
Linq brinda una serie de beneficios para poder trabajar con colecciones de objetos en el mundo .NET de una manera similar a SQL, sin que esto implique necesariamente una operacion hacia la Base de Datos.
Naturalmente, entre los pro y contra encontra algunas dificultades tecnicas que se deben superar.
4 comments:
Javier, hice lo q dices en tu Blog, pero no me funciona, ojala y puedas ayudarme te dejo los codigos haber en q me estoy equivocando, llegue a tu blog buscando una respuesta al error "El origen de datos no admite la paginación de datos del servidor", el cual solucione con tu solucion, pero el problema ahora es q no me llena la Grid.
ASPX.
HeaderText="Numero" DataField="Numero" SortExpression="Numero"
HeaderText="Item" DataField="NumeroItem" SortExpression="Nro_Item"
HeaderText="Fecha Guia" DataField="Fecha" SortExpression="FechaGuia" DataFormatString="{0:dd/MM/yyyy}"
HeaderText="Fecha Informe" DataField="Fecha_Informe" SortExpression="FechaInforme"
HeaderText="Rut" DataField="Rut" SortExpression="Rut"
HeaderText="Cliente" DataField="Cliente" SortExpression="Cliente"
HeaderText="Nombre Tecnico" DataField="NombreTecnico" SortExpression="Nombre_Tecnico"
HeaderText="Revisada" DataField="Revisada" SortExpression="Revisada"
ASPX.CS
private void gvDataBind()
{
var _objInformesTecnico = new List EnInformeTecnico();
var _objGuiaLaboratorio = new List EnGuiaLaboratorio();
_objInformesTecnico = NgInformeTecnico.Buscar(filtroWhere);
_objGuiaLaboratorio = NgGuiaLaboratorio.BuscarDatosInfTec(filtroWhere1);
var _objInformeTecnico = from Informe_Tecnico in _objInformesTecnico
join Guia_Laboratorio in _objGuiaLaboratorio on
Informe_Tecnico.Numero equals Guia_Laboratorio.Numero
select new
{ Informe_Tecnico.Numero, Informe_Tecnico.NumeroItem, Guia_Laboratorio.Fecha, Informe_Tecnico.FechaInforme, Guia_Laboratorio.Rut, Guia_Laboratorio.Cliente, Informe_Tecnico.NombreTecnico, Informe_Tecnico.Revisada };
gvBusInformeTecnico.DataSource = _objInformeTecnico.ToList(); gvBusInformeTecnico.DataBind();
}
al Codigo le tuve q hacer una serie de cambios, al codigo q te estoy mostrando aka, por q no me dejo publicar los Tags<>, ok. por si lo ves medio raro...
...muchas gracias de antemano.
Que curioso!
Lo primero que tendrias que validar es si la variable _objInformeTecnico que se enlaza al GridView tiene elementos o NO.
Yo haria un:
Response.Write( _objInformeTecnico.ToCount() );
Para descartar eso.
Luego serian ya propiedades del GridView o verificar que el metodo gvDataBind NO se esta ejecutando.
Excelente aporte Javier, funcionó perfectamente, ...
Gracias
Buena noticia que te haya funcionado :)
Post a Comment