Muy buenas, ¿alguien lo necesitó antes que yo?:
Del lado del Servidor "construyo una tabla" HTML para luego "inyectarla" en
la página ASP.NET
El resultado final es una cadena del tipo:
aux ="<TABLE>filas y columnas con datos <TR>....</TABLE>"
Bien, hasta aquí sin problemas, PERO, necesito comprobar si alguna/s
columna/s están vacias
¿Cómo recorrer una tabla almacenada en una cadena para comprobar si alguna/s
columna/s están vacias PARA ELIMINAR ESA/S COLUMNA/S de la tabla?
?¿?¿?¿?¿¿? :-(
dt.Columns.Add(
"A", GetType(String))dt.Columns.Add(
"B", GetType(String))dt.Columns.Add(
"C", GetType(String))dt.Columns.Add(
"D", GetType(String))dt.Columns.Add(
"E", GetType(String)) ReDim Preserve arrFlags(columnsCOUNT)row(j) = The_value
Next jdt.Rows.Add(row)
Next iGridView1.DataSource = dt
GridView1.Columns(j).Visible = arrFlags(j)
Next jGridView1.DataBind()
Para recorrer la tabla primeramente tienes que tener el objeto
HtmlTable para empezar a recorrerlo, como tu estas creando lo debes
tener en el alguna variable sino es asi guardalo.
Pero si no lo tienes tendras que buscar este table en el codigo
mediante su id.. (su id del servidor) o sea algo asi:
Dim t as htmlTable = Ctype(me.FindControl("IdTable"), HtmlTable)
Si no tienes algo asi, porque dices que lo "creas" entonces tendras de
antemano un objeto que es una instancia de la clase HTMLTable
SI NO LO TIENES y veo que un ejemplo nos das algo asi
aux ="<TABLE>..."
Esto como veras no es una TABLA, sino una cadena (un simple string),
parsear esto a una tabla es un poco "artesanal"
Puedes armar la tabla con HtmlTable, HtmlTableRow, HtmlTableCell??? Te
seria mucho mas facil (y es mi recomendacion).. va si puedes no tienes
que armarla ya que tienes en ASP.NET 2.0 el webcontrl GRIDVIEW que se
enlaza a datos (sean vacios o no en sus celdas de filas) y se
renderiza a TABLE en el cliente
Pero si ya lo tienes como te comentaba, solo tienes que ir
"recorriendo" en sus colecciones especificas que tiene este control
Private SubTablaRecorrer(ByVal t As HtmlTable)
Dim f As HtmlTableRow
Dim c As HtmlTableCell
For Each f In t.Rows
For Each c In f.Cells
c.InnerHtml = c.InnerHtml & "."
Next
Next
End Sub
(tambien puedes preguntar si es vacio por esta
propiedad .innerHTML.Trim = "")
Pero en innerHTML es el contenido en HTML puedes coloca por ejemplo
"<b>Hola Mundo!</b>" para que se mostrar el texto en negrita, si en
cambio necesitas agregar un control (y me imagino que un control del
lado del servidor) puedes hacer esto y agregar ducho contor(culaquiera
que quieras a la celda mediante su coleccion de controles...
For Each f In t.Rows
For Each c In f.Cells
Dim txt As New TextBox
c.Controls.Add(txt)
Next
Next
Espero que te sirva de ayuda o guia
______________________
Jose A. Fernandez
blog: http://geeks.ms/blogs/fernandezja
On 22 feb, 21:07, "Segundo Serrano" <sserrano[at]jabs[dot]com[dot]pe>
wrote:
> "David" <dgiro...@hotmail.com> escribió en el mensaje de noticiasnews:efmJ4qZd...@TK2MSFTNGP03.phx.gbl...
Las alternativas las había sopesado, pero implicaba recodificar todo el
"tinglado" de montar la tabla, únicamente era por si alguien había
"parseado" un cadena que conteniera una tabla HTML ("<TABLE>......</TABLE>")
para suprimir columnas con todas sus celdas "vacías".
En fin gracias de todos modos!!!
Y para leer estos controles debes "crearlos" en el evento "Page_Init"....
--
Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile