Retroceder   Foros del Web > Programación para sitios web > .NET

Respuesta
 
Herramientas Desplegado
Antiguo 23-oct-2003, 03:01   #1 (permalink)
Albertron está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Mensajes: 161
2 sobre DataGrids

Hola qtal,

Me gustaría saber si es posible hacer alguna de estas dos cosas:
1.- Cargar un DataGrid en "modo edición". Es decir, que en el DataGrid se muestren de entrada unos textbox con los datos recuperados por una consulta para poder modificarlos.

2.- Se puede cargar un DataGrid a partir de un vector? Es decir, la fuente de información del DataGrid sería un vector y las columnas del DataGrid se corresponderían con cada una de las posiciones del vector.

Gracias y saludos,
Albertron está desconectado   Responder Citando
Antiguo 23-oct-2003, 13:07   #2 (permalink)
Moderador
RootK llegará a ser famoso muy prontoRootK llegará a ser famoso muy pronto
 
Avatar de RootK
 
Fecha de Ingreso: noviembre-2002
Ubicación: México D.F
Mensajes: 7.528
Enviar un mensaje por MSN a RootK
Cita:
1.- Cargar un DataGrid en "modo edición".
Porque no lo cargas con un ItemTemplate y lo llenas con el nombre de los campos. (utilicé la BD Northwin)

Ejemplo:


<asp:DataGrid id="tabs" runat="server" Width="483px" AutoGenerateColumns="False" >
<Columns>
<asp:TemplateColumn HeaderText="Contact Name"> <ItemTemplate>
<asp:textbox ID="txtContact" Runat=server text='<%# Container.DataItem("ContactName") %> '>
</asp:textbox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Address"> <ItemTemplate>
<asp:textbox ID="txtAddress" Runat=server text='<%# Container.DataItem("Address") %>'>
</asp:textbox>
<ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>

Y con ello cuando se carge la pagina se cargará en un textbox.

Cita:
2.- Se puede cargar un DataGrid a partir de un vector?
Si es como lo pienso lo podrías hacer de ésta manera: (voy a tomer los mismos nombre para seguir con el ejemplo)


Cita:

Dim ds As DataSet

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
If Not IsPostBack Then
ds = GetDS2()
tabs.DataSource = ds
tabs.DataBind()
End If

End Sub

Function GetDS2() As DataSet
Dim i As Integer
Dim arrContacts() As String
Dim arrAddress() As String

arrContacts = New String(2) {"Nombre1", "Nombre2", "Nombre3"}
arrAddress = New String(2) {"Address1", "Address2", "Address3"}

ds = New DataSet

Dim dt As New DataTable("Usuarios")
dt.Columns.Add("ContactName", GetType(String))
dt.Columns.Add("Address", GetType(String))
ds.Tables.Add(dt)

For i = 0 To 2
Dim dr As DataRow = dt.NewRow()
dr(0) = arrContacts(i).ToString
dr(1) = arrAddress(i).ToString

dt.Rows.Add(dr)
Next

Return ds

End Function
Y este DataSet se lo pasas a tu grid y tambien será visto en cuadros de texto.

Espero que te sirvan éstos ejemplos.

Saludos
__________________
Nadie roba nada ya que en la vida todo se paga . . .
RootK está desconectado   Responder Citando
Antiguo 24-oct-2003, 04:39   #3 (permalink)
Albertron está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Mensajes: 161
Hola qtal,
Gracias por la ayuda.
Una cosa más, tengo una select que me recupera 3 campos.
Uno lo quiero poner en un checkbox y el otro en un textbox.
Y quiero que se repita n veces (tantas como registros tenga la select) por el DataGrid.
Es decir, cada fila del Datagrid tendrá un checkbox (marcado o no en función del 3er campo de mi select) y a su
lado, un textbox (con información o no en función de si el checkbox está marcado o no).
Entiendo que el montaje es un poco complicado
De momento tengo la consulta, ahora me falta visualizar esa consulta en el DataGrid.
Ah! Otra duda que me surge. Es posible en un datagrid pintar la información en, por ejemplo, 3 columnas de n filas?
Por ejemplo, si la consulta me recupera 60 registros, hacer 3 columnas de 20 registros cada una
Gracias y saludos,
Albertron está desconectado   Responder Citando
Antiguo 24-oct-2003, 09:00   #4 (permalink)
Moderador
RootK llegará a ser famoso muy prontoRootK llegará a ser famoso muy pronto
 
Avatar de RootK
 
Fecha de Ingreso: noviembre-2002
Ubicación: México D.F
Mensajes: 7.528
Enviar un mensaje por MSN a RootK
Cita:
Y quiero que se repita n veces (tantas como registros tenga la select) por el DataGrid.
Es decir, cada fila del Datagrid tendrá un checkbox (marcado o no en función del 3er campo de mi select) y a su
lado, un textbox
Si me puedes explicar un poco mas lo que deseas sería mejor..

Cita:
si la consulta me recupera 60 registros, hacer 3 columnas de 20 registros cada una
Porque no haces mejor una paginación..?? sería mas presentable la información no crees..??

Saludos
RootK está desconectado   Responder Citando
Antiguo 24-oct-2003, 10:41   #5 (permalink)
Albertron está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Mensajes: 161
A ver si consigo explicarme porque lo que quiero hacer creo que es un poco complicado:

Voy a suponer que sabes SQL (espero que si). Lo que quiero hacer es el mantenimiento de una relación M a N.

Imagina que tengo una tabla con modelos de coche (Audi A3, Ford Mondeo, ...) y otra con equipamientos de coches (Llantas de aleación, aire acondicionado). Lo que quiero hacer es un formulario donde pueda asignar el equipamiento a un modelo de coche.

Pasando como parámetro el modelo del coche, tengo un Datagrid, y cada fila o registro del DataGrid consta de:

- Un checkbox cuya etiqueta es el nombre del equipamiento que quiero asignar a ese modelo de coche
- Un textbox que es un campo de observaciones

El funcionamiento del formulario es el siguiente. Yo voy marcando checkboxes y añadiendo las observaciones y cuando le doy a un botón de guardar, tengo que guardar en la tabla de la relación M a N, los registros del DataGrid
Albertron está desconectado   Responder Citando
Antiguo 24-oct-2003, 10:52   #6 (permalink)
Albertron está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Mensajes: 161
A ver si consigo explicarme porque lo que quiero hacer creo que es un poco complicado:

Voy a suponer que sabes SQL (espero que si). Lo que quiero hacer es el mantenimiento de una relación M a N.

Imagina que tengo una tabla con modelos de coche (Audi A3, Ford Mondeo, ...) y otra con equipamientos de coches (Llantas de aleación, aire acondicionado). Lo que quiero hacer es un formulario donde pueda asignar el equipamiento a un modelo de coche.

Pasando como parámetro el modelo del coche, tengo un Datagrid, y cada fila o registro del DataGrid consta de:

- Un checkbox cuya etiqueta es el nombre del equipamiento que quiero asignar a ese modelo de coche
- Un textbox que es un campo de observaciones

El funcionamiento del formulario es el siguiente. Yo voy marcando checkboxes y añadiendo las observaciones y cuando le doy a un botón de guardar, tengo que guardar en la tabla de la relación M a N, los registros del DataGrid que tengan el checkbox activado.

Hasta aquí bien?

Ahora, el "problema" lo tengo cuando entro en el formulario con un modelo que ya tiene asignado algún equipamiento, porque me tiene que aparecer el checkbox del equipamiento marcado.

He intentado probando lo siguiente:

<asp:DataGrid ... OnItemDataBound="pr_activar_checks">
<columns>
<asp:TemplateColumn HeaderText="Característica">
<ItemTemplate>
<asp:CheckBox Runat=server Text='<%# Container.DataItem("caracteristica") %> '>
</asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Ubicación">
<ItemTemplate>
<asp:textbox ID="txtAddress" Runat=server text='<%# Container.DataItem("ubicacion") %>'>
</asp:textbox>
</ItemTemplate>
</asp:TemplateColumn>
</columns>
</asp:DataGrid>


La idea, lo que no se hacer y no se si se puede o no, es que desde la función que llamo con el OnItemDataBound, pueda acceder a la propiedad Text del Textbox del DataGrid y, si me recupera texto, entonces haría esto:

If (texto_que_recupero de e.Item.Cells(2) <> nulo) Then
Dim cBox as checkBox
cBox.Checked = True
e.Item.Cells(0).Controls.Add(cBox)
End If

Entiendes la idea?

Gracias y saludos
Albertron está desconectado   Responder Citando
Antiguo 24-oct-2003, 12:21   #7 (permalink)
Moderador
RootK llegará a ser famoso muy prontoRootK llegará a ser famoso muy pronto
 
Avatar de RootK
 
Fecha de Ingreso: noviembre-2002
Ubicación: México D.F
Mensajes: 7.528
Enviar un mensaje por MSN a RootK
Cita:
me tiene que aparecer el checkbox del equipamiento marcado
Hola... si mas o menos te entendí lo que podrías hacer es crear una funcion que regrese un valor booleano a tu checkbox dependiendo del registro, ejemplo:

Cita:
<asp:TemplateColumn HeaderText="Característica">
<ItemTemplate>
<asp:CheckBox Runat=server Text='<%# Container.DataItem("caracteristica") %> ' Checked='<%# Checar(Container.DataItem("el_campo_a_validar")) %>' >
</asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
y en tu código...:

Cita:
Function Checar (ByVal str As String) As Boolean

If str="" Then
Return True
Else
Return False
End If

End Function
y con ello validas el campo que recoges de tu BD y en conforme a ello va a aparecer checado o no tu ckeckbox.


Espero te sirva.

Suerte
RootK está desconectado   Responder Citando
Antiguo 26-oct-2003, 04:29   #8 (permalink)
Albertron está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Mensajes: 161
ok,
probaré lo que sugieres, a ver qué tal. Una última cosa para cerrar el círculo. Es posible ir recorriendo un DataGrid registro a registro para ir insertando los valores del registro en el SQL Server?
La idea es tener un botón que al pulsarlo, llame a un procedimiento que vaya recuperando los valores del datagrid.
Luego yo, en función de si un campo está checkeado o no, haría un insert en la base de datos,
Saludos,
Albertron está desconectado   Responder Citando
Antiguo 27-oct-2003, 04:22   #9 (permalink)
Albertron está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Mensajes: 161
Hola qtal,
Ya he cerrado el círculo
Utilizo este código en un botón externo al DataGrid para recorrer cada fila del DataGrid e ir insertando los valores en la base de datos.

Dim gridrow As DataGridItem

For Each gridrow In tabs.Items
cod_caracteristica = CType(gridrow.FindControl("cod_carac"), TextBox).Text

nom_caracteristica = CType(gridrow.FindControl("cb_carac"), CheckBox).Text

ubicacion = CType(gridrow.FindControl("ubicacion"), TextBox).Text

If ubicacion <> "" Then
' Hago la inserción
End if
Next


Gracias por la ayuda y saludos
Albertron está desconectado   Responder Citando
Antiguo 09-ene-2008, 15:51   #10 (permalink)
felixini ha deshabilitado el karma
 
Fecha de Ingreso: enero-2008
Mensajes: 10
Re: 2 sobre DataGrids

hola! una consulta y como haces para actualizar tu datagrid desde un boton externo a este.. porque son varios campos de texto. Me sale solo para un solo campo pero no para otro de diferente id
felixini está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 09:19.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93