Foros del Web » Programación para mayores de 30 ;) » .NET »

DAtagrid con un solo registro

Estas en el tema de DAtagrid con un solo registro en el foro de .NET en Foros del Web. Hola me gustaria crear un datagrid en el cual solo se muestre un registro que tiene muchos campos. Ese datagrid solo deberia tener 2 columnas ...
  #1 (permalink)  
Antiguo 20/06/2005, 04:48
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 1 mes
Puntos: 1
DAtagrid con un solo registro

Hola me gustaria crear un datagrid en el cual solo se muestre un registro que tiene muchos campos. Ese datagrid solo deberia tener 2 columnas una con el nombre del campo y otra con el valor del campo y que se pueda modificar.

Algun experto en datagrid ke me pueda poner al dia de como hacer esto??'

gracias.
  #2 (permalink)  
Antiguo 20/06/2005, 05:12
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Pues deberías crearte por ejemplo un datatable que solo tuviese esas 2 columnas y cargarlo con las mismas a partir del reader que traigas de la bd, para pasarselo como datasource al grid.

Pero si no te hacen falta el resto de campos, lo mejor y para optimizar la aplicación es que sólo te traigas esos dos registros de la bd

select campo,valor from loquesea
  #3 (permalink)  
Antiguo 20/06/2005, 05:28
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 1 mes
Puntos: 1
Mensaje Una pequeña ayuda

Si me pudieras dar un pequeño ejemplo de como cargar el datetable con el reader te lo agradeceria.

Estoy intentando crear 2 columnas una sera el nombre del campo de la base de datos y el otro sera el dato dentro de un textbox.

Pero las 2 columnas son mias, mejor con un ejemplo:

NOMBRE: DATOS:
nombreusu diego
apellidousu garcia
direccion calle pez
provincia madrid

Esa es la estructura que me gustaria que me mostrara el datagrid.

gracias por la ayuda
  #4 (permalink)  
Antiguo 20/06/2005, 05:47
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
supongamos que tienes la consulta hecha sobre un datareader llamado dr, pues ahora haríamos

dim tabla as datatable = new datatable
tabla.columns.add("Nombre")
tabla.columns.add("Datos")

dim fila as datarow
while dr.read
fila = tabla.newrow()
fila("Nombre") = "nombreusu"
fila("datos") = dr("nombreusu")
tabla.rows.add(fila)

fila = tabla.newrow()
fila("Nombre") = "apellidousu"
fila("datos") = dr("apellidousu")
tabla.rows.add(fila)
.....
end while

datagrid1.datasource = tabla
  #5 (permalink)  
Antiguo 20/06/2005, 07:28
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 1 mes
Puntos: 1
Asi magnifico pero

Se puede o es conveniente usar un datatable si la sql que hago es de varaias tablas???

Y hay alguna forma de que el dato que lee de la base de datos sea un tipe text para que pueda modificarlo el usuario???


gracias

Última edición por Nombela; 20/06/2005 a las 07:42
  #6 (permalink)  
Antiguo 20/06/2005, 08:55
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
No pasa nada por que la sql sea de varias tablas, ya que estás montando el datatable de forma manual y le metes los datos que tu quieres.

Respecto a la segunda pregunta, si te digo la verdad, no lo se puesto que no trabajo con grids, pero supongo que podrías crear un textbox ponerle en el .text el valor del dr("loquesea") y añadir éste, en vez de directamente el dr, pero no se si te funcionará
  #7 (permalink)  
Antiguo 20/06/2005, 09:07
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 1 mes
Puntos: 1
Textbox con datagrid

Aqui te pongo lo que hago:

while(reader.Read())
{
for(int i=0;i<reader.FieldCount;i++)
{
TextBox dato = new TextBox ();
fila = dt.NewRow();
fila["Nombre"] = reader.GetName(i);
dato.Text=reader.GetValue(i).ToString();
fila["Dato"] = dato.Text;
dt.Rows.Add(fila);
}
}

Pero me sigue saliendo igual, no me sale en un textbox sino en textgo plano.
  #8 (permalink)  
Antiguo 20/06/2005, 09:23
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
mmm, no se, es webform, no???

Porque no lo defines el la vista diseño???Yo no he usado datagrid para webforms, pero si recuerdas creo que ya hicimos algo parecido, sería algo asi (con sintaxis de datagrid

<ItemTemplate>
<td>
<%# DataBinder.Eval(Container.DataItem, "Nombre") %>
<td>
<td>
<asp:textbox runat="server" text=<%# DataBinder.Eval(Container.DataItem, "Dato") %> >%>
<td>
</ItemTemplate>
  #9 (permalink)  
Antiguo 20/06/2005, 10:04
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 1 mes
Puntos: 1
conseguido

He conseguido ke me salieran todos en textbox asi:

<asp:TemplateColumn HeaderText="Nombre">
<ItemTemplate>
<asp:TextBox runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Nombre") %>'>
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Dato">
<ItemTemplate>
<asp:TextBox runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Dato") %>'>
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>

Ahora como hago para recuperara los valores de los textbox?????

es ke necesitare meterlos en una sql para actualizar la base de datos.
  #10 (permalink)  
Antiguo 20/06/2005, 10:19
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Pues tendrás que recorrer los items del datagrid, y obtener los nuevos valores, sería algo así

dim i as integer = 0
while i < datagrid1.Items.Count
dim nuevo as string = ctype(datagrid1.Items(i).Controls(1), textbox).text
i+=1
end while

el número de control que sea 1 no estoy seguro, tendrás que probar seguramente hasta encontrar el número exacto, en un repeater sería 1.
  #11 (permalink)  
Antiguo 21/06/2005, 02:19
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 1 mes
Puntos: 1
error

este es mi codigo:

int i=0;
while (i < DataGrid1.Items.Count)
{
string nuevo = ((TextBox)(DataGrid1.Items[i].Controls[1])).Text;
MsgBox1.alert(nuevo);
i+=1;
}

y me da este error:

Specified cast is not valid

Alguna sugerencia????
  #12 (permalink)  
Antiguo 21/06/2005, 02:23
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 1 mes
Puntos: 1
lo consegui

while (i < DataGrid1.Items.Count)
{
b = DataGrid1.Items[i].FindControl("textbox1") as TextBox;
string nuevo = b.Text;
Response.Write(nuevo);
Response.Write("<BR>");
i+=1;
}

asi me fue bien
  #13 (permalink)  
Antiguo 21/06/2005, 02:29
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 1 mes
Puntos: 1
Como???

Como podria hacer para que los valores que tienen true en el texbox se conviertan en checkbox???

gracias
  #14 (permalink)  
Antiguo 21/06/2005, 02:43
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
No entiendo lo que quieres decir
  #15 (permalink)  
Antiguo 21/06/2005, 02:48
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 1 mes
Puntos: 1
Mira mi listado saca esto:

nombre diego--->textbox
apellido garcia--->textbox
coche true---->textbox

pues lo que quiero es que el ultimo textbox sea un checkbox que este selected si es true y deseleccionado si es false.
  #16 (permalink)  
Antiguo 21/06/2005, 03:44
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Pues si además necesitas recuperar el valor no se yo, va a ser chungo, porque, por lo menos la version del netframework que yo tengo no admite al mismo tiempo <% if y <%# DataBinder.

Una posible solución sería meterlo en 2 datagrids distintos, si no, nose, pero mirare algo
  #17 (permalink)  
Antiguo 21/06/2005, 03:49
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 1 mes
Puntos: 1
si no estaba pensado hacerlo como el asp antiguo. el decir crear un table a mano y rellenarlo con los value del input.
y como los check son siempre los mismos pues eso.

Pero seguire buscando antes.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:13.