Ver Mensaje Individual
  #5 (permalink)  
Antiguo 05/05/2009, 10:50
Avatar de fechasoru
fechasoru
 
Fecha de Ingreso: diciembre-2008
Mensajes: 149
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Datagridview con dos origenes de datos distintos

Hola de Nuevo !!
Lo resolvi de esta manera y está muy bueno era lo que buscaba.

Estoy utilizando el ORM EntitySpaces 2008. http://www.entityspaces.net/

Agrego a mi clase vendedor columnas virtuales, de esta manera puedo bindearlo en tiempo de diseño y de ejecucion. En estos campos recupero los datos de una consulta hecha con inner join. Lo bueno de esto que puedo agregar objetos a la coleccion y llamar al metodo SAVE() del ORM para realizar las operaciones CRUD en la tabla vendedor solamente. Otra cosa Además permite realizar ordenamiento sobre las columnas.

El codigo de la clase.

public partial class Vendedor : esVendedor
{
protected override List<esPropertyDescriptor> GetLocalBindingProperties()
{
List<esPropertyDescriptor> props = new List<esPropertyDescriptor>();

props.Add(new esPropertyDescriptor(this, "Provincia", typeof(string)));
props.Add(new esPropertyDescriptor(this, "Localidad", typeof(string)));
props.Add(new esPropertyDescriptor(this, "Sucursal", typeof(string)));


return props;
}

public string Provincia
{
get { return (string)this.GetColumn("Provincia"); }
set { this.SetColumn("Provincia", value); }
}

public string Localidad
{
get { return (string)this.GetColumn("Localidad"); }
set { this.SetColumn("Localidad", value); }
}

public string Sucursal
{
get { return (string)this.GetColumn("Sucursal"); }
set { this.SetColumn("Sucursal", value); }
}

}


El codigo del inner join con Querys del Api del ORM

public partial class VendedorCollection : esVendedorCollection
{

/// <summary>
/// Recupera todos los vendedores con los nombres de provincias,localidades y sucursales
/// </summary>
/// <returns></returns>
public VendedorCollection vendedores_con_localidad_y_sucursal()
{
VendedorQuery v = new VendedorQuery("v");
ProvinciaQuery p = new ProvinciaQuery("p");
LocalidadQuery l = new LocalidadQuery("l");
SucursalQuery s = new SucursalQuery("s");
v.Select(v.ApellidoNombre, v.Dni, v.Cuit, v.Domicilio, v.TelefonoFijo, v.TelefonoMovil, v.Email, v.IdLocalidad, v.IdProvincia, v.IdSucursal, v.IdVendedor, p.Denominacion.As("Provincia"), l.Denominacion.As("Localidad"), s.Denominacion.As("Sucursal"));
v.InnerJoin(p).On(v.IdProvincia == p.IdProvincia);
v.InnerJoin(l).On(v.IdLocalidad == l.IdLocalidad);
v.InnerJoin(s).On(v.IdSucursal == s.IdSucursal);
VendedorCollection vendedores = new VendedorCollection();
vendedores.Load(v);
return vendedores;

}

}


La foto en tiempo de diseño