Ayuda con ASP .NET

SeiYa

Veréis, no tengo ni puta idea de ASP .NET, se ASP y PHP (bastante más PHP que ASP pero da igual a fín de cuentas es lo mismo xD)

El caso es que tengo una especie de prueba, saben que no se ASP .NET pero quieren que lo intente, el caso es que bueno, me piden una cosa SENCILLÍSIMA por lo menos para ASP o PHP.

Consiste en mostrar el listado de una tabla, y luego la opción de examinar o ver más, como queráis llamarlo, para ver la información que tienen esos registros en otras tablas.

En ASP o PHP yo haría una conexión a la base de datos, una consulta para recibir los datos de la tabla, los mostraría en una tabla, después añadiría un link pasándole la id del registro y con esa id haría las consultas restantes para el resto de tablas que tengan relación.

Pero como es ASP .NET no tengo ni zorra XD me ponen el compilador de Visual Basic .NET con un nuevo WebForm y que me busque la vida.

Busqué y busqué y nada, no enconré gran cosa, además no tiene la típica ayuda msdn instalada XD

Pero bueno quieren que vuelva a intentarlo otro día y yo, como último recurso, acudo al gran gremio de MV repleto de sabios.

Espero que podáis echarme una mano, un saludo y gracias.

Soltrac

Explicartelo entero seria complicao.

Te explico, las conexiones en .NET no son en ADO como en Visual Basic (ASP), son en ADO .NET.

Yo no se si sabrás algo de Visual Basic .NET, pero si sabes, ASP.NET es lo mismo xD.

Necesitas hacer algo parecido a esto

Arriba del todo un imports:

Imports System.Data.OleDB <- Para el espacio de nombres

Ahora necesitas crear un objeto Connection. Esto lo puedes hacer con el propio diseñador, se llama OleDbConnection.

Imagina q has creado un objeto OleDbConnection q se llama Conexion

Para crear la sentencia SELECT pues haces esto

Dim DA As New OleDbDataAdapter("SELECT FROM MiTabla",Conexion)

Ahora creas u nobjeto DataSet, q contendra las tablas, ya que en .NET se trabaja "offline", es decir, te descargas lo q sabes por un DataAdapter a un DataSet.

Algo asi, suponiendo q tu DataSet se llama DS

DA.Fill(DS,"MiTabla")

Ahora ya puedes conectar lo q kieras a la tabla. En este caso el grid.

MiGrid.DataSource = DS
MiGrid.DataMember = "MiTabla"

Y listo, ya esta

Es complicao al principio pq las conexiones no tienen nada que ver con ADO, pero bueno :)

Si luego quieres hacer mas conexiones para lo de la id del registro? Pues otro DataAdapter. No es necesario otro dataset, porque los dataset serian como bases de datos. Tu puedes relacionar Tablas de DataSets, solo que trabajas "offline", no conectado a la tabla original, la conexion solo se hace cuando haces el método "Fill" del DataAdapter

SeiYa

Todo clarísimo, muchas gracias, solo que no se como añadir al datagrid, una última columna que sea el ver más, como pasar variables por url, como recogerlas y bueno, usarlas creo que si sabré XD

VoLRaTh

Para añadir una nueva columna, es mediante el codigo html, añadirla mediante codigo o el editor y asignarle un evento al datagrid y recogerlo en el codigo.

Para pasar variables por url es llamar a dicha url que seria del pelo ... .aspx en un string y concatenarlo con ? + variable + = + asignacion, por ejemplo http://media-vida.net/postear.aspx?fid=9 y para recogerla tienes el metodo queryString de la clase Request.

SeiYa

Yo como ya digo, ASP si que se y PHP también, no sabía que se recogían del mismo modo en ASP .NET en ese caso gracias.

Lo de añadir al datagrid una columna que cada fila use datos de esa fila para generar la url ¿sabe alguien como va más o menos o algún lugar para averiguarlo?

Por más que busco no encuentro. Gracias y un saludo.

Soltrac

No he trabajado nunca con grids de ASP .NET, ya que en mi empresa tenemos un pakete de component one q es la repolla q trae un grid bastisimo, por lo q no se me ocurre como hacer un link de ver más.

Supongo q si metes algo de html sera mas facil...no se no se, deberias buscar en el msdn ayuda sobre el grid de ASP .NET q no se si se llamará DataGrid como el de VB .NET.

Si sabes hacer el link, pues lo q se me ocurre es que metas una línea al DataSet con un campo string q tenga por DefaultValue = "Ver Más" y así saldrá una columna más con ese campo, pero no se como hacer q aparezcan como link :S

Sobre lo de pasar variables, es como te han dixo. No tiene ningun misterio.

IS4kO

ahí ahí ABRIENDO LA MENTE si señor :)

Es tan facil como configurar la columna ó celda que quieras que sea de tipo vinculo, imagino que lo estas haciendo con VS

Si es el 2003 una vez tengas el grid (boton derecho y generador de propiedades>Columna>ColumnaHipervinculo)

Si estas en 2005, arrastaras el grid view y luego configuras de iwal forma la celda o columna o fila que quieras, tanto desde las task list del grid view>Campo Hiper Link; o directamente sobre las propiedades del de la colección del grid

SeiYa

Al final lo he hecho a pelo con html en vez de un datagrid.

Uso un oledbdatareader, pero claro, tengo un problema.

No se mostrar datos de dos consultas distintas, ya que me da un error por que solo me deja tener un reader activo y queriá saber alguna forma de guardar su resultado en un array o algo similar.

Un saludo.

Soltrac

Como ya te dije, no uses OleDBDataReader, usar OleDBDataAdapter y DataSet

El DataSet hara de "array" en una tabla

IS4kO

#8

Como bien dice #9 usa Datasets

SeiYa

¿Y como recojo los datos del data set?

Por que con el datareader se que es reader("nombrecampo") pero no se hacerlo con el dataset.

No quiero atar el dataset a un grid ni nada, quiero hacerlo yo.

Thx por todo.

IS4kO

Hay bastantes formas de acceder a los datos, pero pensando en algo simple y suponiendo que usas sql, un ejemplillo simple..

Primero lo llenas:

Private Sub Llena()
Dim str As String = "SELECT * FROM KAKA"
Dim strC As String = "Datos de conexion, server, pwd,etc"
Dim dA As New SqlDataAdapter(str, strC)
Dim miDataSet = New DataSet()
dA.Fill(miDataSet, "KAKA")
End Sub

Y luego para acceder a el, pues te mueves como si fuera una matriz o vector, con posibilidad de tener varias tablas, filas etc.....:

miDataSet.Tables(0).Rows(0).item...........

Echale un ojillo a la msdn encontrarás multitud de ejemplos

Soltrac

"miDataSet.Tables(0).Rows(0).item..........."

O incluso

Fila 0

miDataSet.Tables("KAKA").Rows(0)("campo1")
miDataSet.Tables("KAKA").Rows(0)("campo2")
miDataSet.Tables("KAKA").Rows(0)("campo3")

Fila 1

miDataSet.Tables("KAKA").Rows(1)("campo1")
miDataSet.Tables("KAKA").Rows(1)("campo2")
miDataSet.Tables("KAKA").Rows(1)("campo3")

y para recorrer todas las filas puedes hacer:

Dim Fila As DataRow
For Each Row in miDataSet.Tables("KAKA").Rows

Row("campo1")
Row("campo2")
Row("campo3")
.
.
.
Next

Usuarios habituales

  • Soltrac
  • IS4kO
  • SeiYa
  • VoLRaTh