Wednesday, June 30, 2010

Datagrid ASP.NET jscript y querystring

Muchas veces necesitamos pasar datos de una página a otra. Una manera es usando los querystring y a veces hay casos que a de esta otra página necesitamos pasar datos a los controles de la página padre. Me explico?

Tengo un formulario padre que llama a un popup, al cerrar el popup se necesita bajar ciertos datos a ciertas cajas de texto del formulario al que lo llamó.

Solucionamos esto con JavaScript.

El código JS sería...

function popupBusqueda(idForm,control1,control2,idAlmacen,idEmpresa)
{
aleatorio = (Math.round((Math.random()*99999)+1))
popUpBus =
window.open(idForm + '?formname=' + document.forms[0].name + '&Control=' +
control1 + '&Control2=' + control2 + '&idAlm=' + idAlmacen +
'&idEmp=' + idEmpresa,
aleatorio,"scrollbars=yes,status=yes,width=600,height=500,left=150,top=100");
}

Los parámetros, para este caso, son: el id del formulario,caja de texto1, caja de texto2 (a las que se bajaran los datos) , y los ids que necesitamos mandar para realizar el filtro en el popup.

Luego, utilizamos este método js en el formulario padre de la siguiente forma.
Dim strQueryString As String
strQueryString =
":popupBusqueda('fPopup.aspx','txt1','txt2', " + Me.id1.Value + ", " +
Me.id2.Value + ")"
Me.aBusqueda.HRef = "javascript:javascript" &
strQueryString

(Me.aBusqueda es un anchor.)

Después, en el formulario hijo o popup, en el load capturamos los valores del querystring:

queForm = Request.QueryString("formname")
y así se va haciendo con cada uno. Lo podemos poner en un string, en un view

En el If Not Page.IsPostBack Then, cargamos la grilla.
luego del DataBind(). Va un procedimiento que coloca un JS al linkbutton de la grilla (que es uno de tipo Select)

Public Sub recorrerGrilla()
For i As Integer = 0 To grdBusqueda.Items.Count
- 1
For j As Integer = 2 To grdBusqueda.Items(i).Cells.Count - 1

Dim
button As LinkButton = CType(grdBusqueda.Items(i).Cells(0).Controls(0),
LinkButton)

button.Attributes.Add("onclick", "window.opener.SetBuscar('"
+ queForm + "','" + queControl1 + "','" + queControl2 + "','" +
grdBusqueda.Items(i).Cells(1).Text + "','" + grdBusqueda.Items(i).Cells(2).Text
+ "'" + ");return false;")

Next
Next
End Sub

El js del SetBuscar es como sigue:

function SetBuscar(formName, idCod, idDscr,newCod,newDesc)
{
eval('var
theform = document.' + formName + ';');
popUpBus.close();
if (idCod !=
'') theform.elements[idCod].value = newCod;
if (idDscr != '')
theform.elements[idDscr].value = newDesc;
if (idCod != '')
__doPostBack(idCod,'');
}


Y fiiiiin...
haPPy Coding.

No comments:

Post a Comment