[ Foro de C# ]
desde una clase tengo mi consulta ya hecha
public IDataReader GetPerfiles()
{
const string sql =
"SELECT *" +
"FROM Clientes ";
var par = new ParameterList{ };
return GetDataReader(sql);
}
ahora en otra quiero mostrarla desde un gridview
como puedo hacer eso?
Tendrás que hacer que los datos obtenidos de esa consulta sean el "DataSource" de tu DataGridView. Los pasos habituales salen a ser algo como:
string orden= "SELECT * FROM clientes";
Connection c = new Connection();
SqlDataAdapter dataAdapter = new SqlDataAdapter(orden, c.CadenaDeConexion);
SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
DataSet ds = new DataSet();
dataAdapter.Fill(ds);
dataGridView1.ReadOnly = true;
dataGridView.DataSource = ds.tables[0];
de alguna manera logre que el gridview me mostrara un dato, lo extraño es que yo pense que me deberia mostrar todos pero solo me muestra 1...
aqui dejo el codigo
foreach (var cliente in Factory.Clientes.GetPerfiles())
{
string tamales = (cliente.RPU+"");
GridView1.DataSource = (tamales);
GridView1.DataBind()
}
}
al ejecutar me sale los datos
pero cada letra en diferentes celdas diferentes y verticalmente cuando no deberia de ser así y mostrarme todo en una sola celda
Item
5
2
4
1
4
0
8
0
6
8
3
0
ahora estoy atorado aqui...
otra cosa
la consulta que genere, se encuentra en otra clase conque podría reutilizarla de manera de no hacer lo mismo que hago en el código de arriba por que eso de seleccionar los datos que quiero mostrar no me agrada, preferiría mostrar todo de una vez
Es que no debes enlazar el GridView con el DataSource para cada dato. Esa es una operación que se hace una única vez. A partir de ahí, o lo llenas por completo de forma automática (más simple pero menos versátil), o bien vas tomando datos uno a uno e introduciéndoles en el GridView uno a uno (y eso da más juego, pero también obliga a conocer bien como se maneja un GridView; tendrás que hacer antes alguna prueba independiente de la base de datos).
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)