Friday, November 27, 2009

Agregar ID autonumerico en consulta SQL

Tal y como lo describen el siguiente link

La manera mas sencilla de autonumerar los registros arrojados por una consulta SQL,
sería la siguiente:

select rank() OVER (ORDER BY a.au_lname, a.au_fname) as rank,
a.au_lname, a.au_fname
from authors a
order by rank

De igual manera se puede asignar un autoumerico a una tabla haciendo agrupaciones por uno o mas campos:

select row_number() over (partition by a.BakeLineId order by a.BakeLineId) as rank ,a.*
from tblBakeComment_Impt a
order by BakeLineId

Wednesday, November 4, 2009

ASP .NET Guardar variables en ViewState

Para guardar una variable en ViewState y poder recuperar su valor entre Postbacks seguir los siguientes pasos:

Dim vNombre As String

//Para guardarla antes del Postback:
ViewState("vNombre") = txtNombre.text;

//ParaRrecuperarla:
ViewState("vNombre") = txtNombre.text;

Recuerda que usar el ViewState es bueno en casos donde la información a almacenar es poca, ya que el valor de la cadena ViewState viaja de Cliente a Server y viceversa, cada vez que se realizan los Posts a Servidor, por lo que almacenar en Viewstate, un Dataset muy pesado por ejemplo, nos traería serios problemas de performance

Tambien hay que tomar en cuenta que si el usuario regresa en el Browser (back) el valor de la variable regresa a su valor anterior, por lo que, si queremos guardar el valor durante toda la sesión utilizamos lo siguiente:

//Para guardarla antes del Postback:
Session("vNombre") = txtNombre.text;

//ParaRrecuperarla:
Session("vNombre") = txtNombre.text;

De esta manera el valor de la variable siempre será el mismo, sin importar si el usuario regreso a una página anterior =D

Tuesday, November 3, 2009

Abrir Nueva Ventana dentro de Ajax UpdatePanel

Al intentar abrir una nueva ventana dentro de un Ajax UpdatePanel
marca un error de Parsing, es decir, si queremos abrir una nueva ventana
de la siguiente manera:

Response.Write("<script language="javascript"> window.open('http://pagina.pdf'); </script>")

Nos marcaría un error, ya que este tipo de llamada es ignorada por el UpdatePanel.
Esto lo podemos resolver, llamando la nueva ventana de la sig forma:

ScriptManager.RegisterClientScriptBlock(Me.UpdatePanel1, Me.UpdatePanel1.GetType(), "AnyScriptNameYouLike", "window.open('http://pagina.pdf');", True)