miércoles, 6 de enero de 2010

COMO LLENAR UNA LISTA CON UN DATATABLE EN C#

Este pequeño ejemplo esta desarrollado en una aplicacion en tres capas con procedimientos almacenados, esto surgio debido a que cuando instancias a la clase (ClsClase Objclase = new ClsClase();) esta por defecto toma los campos o declarados, el problema surge cuando generaba una consuilta estos campos se amarraban y me forzaban a tomar la estructura definida en la clase pero como a mi esa estructura no me servia tuve que crear una estructura exclusivamente para el metodo que era necesario que le devuelva en un list, aunque para mi mas facil seria enviarle el datatable xD pero ni modo asi lo querian espero les sirva.

public List<StrucBuscarMarcaModelo> BuscarMarcaModelo(int Intmar_IdMarca,int Intmod_IdModelo)
{
SqlCommand ObjScdCommand = new SqlCommand();
ConexionCatalogo ObjConexion = new ConexionCatalogo();

SqlDataAdapter ObjSdaAdapter = new SqlDataAdapter();
DataTable ObjDteTabla = new DataTable();

List
<StrucBuscarMarcaModelo> ObjLstBusqueda = new List<StrucBuscarMarcaModelo>();
try
{
ObjScdCommand.CommandType = CommandType.StoredProcedure;
ObjScdCommand.CommandText = "CAT_S_MarcaModelo";

ObjScdCommand.Parameters.Add(new SqlParameter("@mar_IdMarca", SqlDbType.Int));
ObjScdCommand.Parameters.Add(new SqlParameter("@mod_IdModelo", SqlDbType.Int));

ObjScdCommand.Parameters["@mar_IdMarca"].Value = Intmar_IdMarca;
ObjScdCommand.Parameters["@mod_IdModelo"].Value = Intmod_IdModelo;

ObjScdCommand.Connection = ObjConexion.Conectar();
ObjScdCommand.ExecuteNonQuery();

ObjSdaAdapter.SelectCommand = ObjScdCommand;
ObjSdaAdapter.Fill(ObjDteTabla);

foreach (DataRow item in ObjDteTabla.Rows)
{
ObjLstBusqueda.Add(new StrucBuscarMarcaModelo
{
Prp_IntMar_IdMarca = Convert.ToInt32(item[0].ToString()),
Prp_IntMod_IdModelo = Convert.ToInt32(item[1].ToString()),
Prp_StrMam_Observacion = item[2].ToString()
});
}
return ObjLstBusqueda;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}

Aca les dejo la estructura de la lista la cual es consumida por el metodo BuscarMarcaModelo

public struct StrucBuscarMarcaModelo
{
public int Prp_IntMar_IdMarca { get; set; }
public int Prp_IntMod_IdModelo { get; set; }
public string Prp_StrMam_Observacion { get; set; }
}

No hay comentarios:

Publicar un comentario