Hola Andres

El código que enviaste hace un postback al servidor para solamente escribir
el script de apertura de la nueva ventana.
además de este script lo debes registrar en la pagina y no simplemente
escribirlo con response.write., para que asp.net tenga un poco mas de
control.

Vamos por parte, registrar el script (algo sencillo)

   Private Sub RegistrarScriptAperturaVentana()
        Dim scriptVentana as New System.Text.StringBuilder
       scriptVentana.Append("<script language=""javascript"">"  & vbCrLf)
       scriptVentana.Append("function VerDetalle(codPlan){" & vbCrLf)
       scriptVentana.Append("    alert(codPlan);" & vbCrLf)
       scriptVentana.Append("}" & vbCrLf)
       scriptVentana.Append("</script>"  & vbCrLf)
       ClientScript.RegisterStartupScript(Me.GetType(), "ABRIR",
scriptVentana.ToString)
   End Sub

Esto codigo lo puedes escribir tranquilamente dentro de tu pagina, tu
masterpage o tu archivo .js externo...ya que no contiene nada raro, puro js.
Es decir no es necesario hacerlo desde el codebehind.

Cuando lo llamamos al script...yo lo armaria en el evento RowDataBound...
Si tienes en tu gridview las columnas y creas una columna template y dentro
un linkbutton
    ...
    <asp:TemplateField>
        <ItemTemplate>
               <asp:LinkButton ID="linkDetalle"
runat="server">Detalle</asp:LinkButton>
        </ItemTemplate>
    </asp:TemplateField>
    ...
*En el codebehind, en el evento RowDataBound algo asi*

 Sub tuGrilla_RowDataBound(ByVal sender As Object, ByVal e As
GridViewRowEventArgs)

    If e.Row.RowType = DataControlRowType.DataRow Then
        Dim linkDetalle as LinkButton =
Ctype(e.Row.FindControl("linkDetalle"), LinkButton)
        Dim codigoPlan As Int32=
convert.Toint32(DataBinder.Eval(e.Row.DataItem, "Cod_Plan "))

        linkDetalle.OnClientClick = "VerDetalle('" & codigoPlan & "');
return false;"   //Luego te comento el return false

    End If
  End Sub

Asi ya cuando esta armando la grilla, en cada enlace/boton estara el codigo
para llamar VerDEtalle que es una funcion del lado del cliente.
El "return false;" es para que el webcontorl que elegiste, que es un
LinkButton no realice el postback ya que no lo necesita.

Tambien como nos brinda la posibilidad de escribir en el diseño codigo
...puedes hacer lo mismo escirbiendo esto en la vista de codigo de la pagina
donde defines las columnas
y tambien mediante el wizard (con las etiquetas inteligentes del control
dentro del template)
*Quedaria algo asi:*
    <asp:TemplateField>
        <ItemTemplate>
                <asp:LinkButton ID="linkDetalle"
                        runat="server"
                        OnClientClick='<%# String.Concat("VerDetalle(",
Eval("Cod_Plan"), "); return false;") %>'>Detalle</asp:LinkButton>
        </ItemTemplate>
    </asp:TemplateField>



*Enlaces:*
------------------
GridView.RowDataBound (Evento)
Se produce cuando una fila de datos se enlaza a los datos de un control
GridView.
http://msdn2.microsoft.com/es-es/library/system.web.ui.webcontrols.gridview.rowdatabound.aspx

String.Concat (Método)
Concatena una o más instancias de String o las representaciones de tipo
String de los valores de una o más instancias de Object.
http://msdn2.microsoft.com/es-es/library/system.string.concat(VS.80).aspx<http://msdn2.microsoft.com/es-es/library/system.string.concat%28VS.80%29.aspx>


Espero que te sirva de ayuda o guia

_______________________
Ing. José A. Fernández
fernandezja @ gmail . com



On Wed, Apr 16, 2008 at 1:58 PM, Andrés Guzmán O <[EMAIL PROTECTED]> wrote:

>  Hola amigos nuevamente aqui necesitando de su ayuda, tengo un problema,
> eh tratado de buscar informacion pero no eh encontrado, quizas no lo estoy
> buscando de la forma correcta. Bueno les cuento de que se trata haber si me
> dicen por como lo tengo que buscar o que solucion puede tener.
>
> Lo que estoy haciendo es genero una tabla en forma dinámica, ahora una de
> estas celdas tiene un boton, al cual le añado un evento:
>
> Creo el boton. (la cantidad de filas depende de una consulta a la base de
> datos)
>
> Dim boton As LinkButton = New LinkButton()
> boton.Text = "Ver mas"
> AddHandler boton.Click, AddressOf Boton1_Click
> boton.ToolTip = "Detalle"
> tc1d.Controls.Add(boton)
>
> ahora el evento
>
>  Protected Sub Boton1_Click(ByVal sender As Object, ByVal e As
> System.EventArgs)
>         Dim sUrl As String = "DetalleAsignatura.aspx"
>         Dim sScript As String = "<script language =javascript> "
>         sScript += "window.open('" & sUrl &
> "',null,'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=350,height=170,left=50,top=50');"
>         sScript += "</script> "
>         Response.Write(sScript)
>     End Sub
> Bueno eso es lo que tengo funciona bien pero necesito enviarle un dato ((
> dt.Rows(i).Item("Cod_Plan")) a mi Ventana Emergente dependiendo de la fila
> de la tabla, ahora esa es mi duda como captura el dato dependiendo de la
> fila para pasarselo al evento o abra alguna otra forma de hacerlo y yo me
> estoy complicando la vida.
>
> De ante mano muchas gracias!!!!
>
>
> Andrés Guzmán O.
> [EMAIL PROTECTED]
> 6711130 anexo 106
>



--

Responder a