C sharp - Pasar registros de la base de datos a un listbox

 
Vista:

Pasar registros de la base de datos a un listbox

Publicado por Cristian Riquelme (1 intervención) el 24/06/2015 03:11:47
Hola mi problema es el siguiente, tengo la tabla llamada "material_presupuesto"

id = int

idpresupuesto = int

nombre = nvarchar

cantidad = int

precio = decimal.

y lo que quiero hacer es buscar en la base de datos todos los materiales que tengan el mismo idpresupuesto y mostrarlos en los listbox correspondientes.

Lo que hice es esto:

SqlConnection con = new SqlConnection();

con.ConnectionString = (Properties.Settings.Default.base_carpConnectionString);

string cadsql = "Select * from material_presupuesto where idpresupuesto ='" + idTextBox.Text + "' ";

SqlCommand comando = new SqlCommand(cadsql, con);

con.Open();

SqlDataReader leer = comando.ExecuteReader();

if(leer.Read() == true)
{
foreach(Object ob in leer)
{
listBox1.Items.Add(leer["nombre"].ToString());
listBox2.Items.Add(leer["cantidad"].ToString());
listBox3.Items.Add(leer["precio"].ToString());

}

}
con.Close();

Lo que sucede es que me guarda en el listbox el ultimo elemento que lee el datareader, Porque sera?

saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Pasar registros de la base de datos a un listbox

Publicado por David (60 intervenciones) el 24/06/2015 10:15:40
Sustituye
1
if(leer.Read() == true)
Por
1
while(leer.Read())
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pasar registros de la base de datos a un listbox

Publicado por Javier Lopez Vargas (21 intervenciones) el 27/05/2016 08:08:10
Lo puedes hacer de la siguiente manera
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
List<object> listTemp = new List<object>()
 
foreach(var item in listBox1.SelectedItems) {
    listTemp.Add(item);
}
 
 
DataTable dt = listbox2.DataSource as DataTable;
 
if(dt == null){
    dt = new DataTable();
    dt.Columns.Add("key");
    dt.Columns.Add("value");
 
	listbox2.ValueMember = "key";
	listbox2.DsiplayMember = "value";
 
}
 
foreach(var item in listTemp) {
 
   DataRowView rowOrigen = (DatarowView)item;
 
   DataRow newRow = dt.NewRow();
   newRow["key"] = rowOrigen["nombrecolumnakey"]; //nombre columna definida como ValueMemeber en el listbox1
   newRow["value"] = rowOrigen["nombrecolumnavalue"];
   dt.Rows.Add(newRow);
 
   listBox1.Items.Remove(item);
}
 
listbox2.DataSource = dt;
Espero te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar