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.

Thursday, June 24, 2010

Cómo agregar datos A un datagrid (VB.NET - ASP.NET) sin perdidas por Un postback

CóMo AgReGaR DaTos A un DataGrid (VB.NET - ASP.NET) SiN PeRdiDaS PoR Un PosTBaCk

El título ya detalla lo que se quiere hacer, no hay mucho por explicar. Vamos directo al código...

Primero, en el If Not IsPostBack Then del Page_Load, cargamos nuestra grilla normalmente y acto seguido le agregamos la siguiente línea de código: Session("Datos") = ds.Tables(0)

En el click de nuestro botón AGREGAR, programamos asi:


Dim dt As DataTable = DirectCast(Session("Datos"), DataTable)

Dim dr As
DataRow = dt.NewRow
dr("dcconccon") = Me.txtCodCli.Text
dr("dcconnoap")
= Me.txtNomCli.Text
dr("inalmcalm") = Me.cboAlmacenes.SelectedValue
dr("inalmnomb") = Me.cboAlmacenes.SelectedItem.Text
dt.Rows.Add(dr)

Me.dgrClientesXAlm.DataSource = dt
Me.dgrClientesXAlm.DataBind()

Session("Datos") = dt


Los rows o las filas de nuestro datatable deben coincidir con las de nuestra grilla. Los datos los extraemos de cajas de texto, combos u otro control.

Con esto, podemos guardar filas y filas de datos en nuestra grilla temporalmente hasta que decidamos mandarlas a la base de datos

Tuesday, June 22, 2010

Como extraer La cadena De conexion del Web.Config

Es muy simple...

Archivo WEB.CONFIG

Primero, debes editar el archivo xml Web.Config Dentro de la etiqueta "configuration" escribir la cadena de conexión a la base de datos:




En el caso de que utilices usuario y password, simplemente se lo agrega y quedaría así:



Lo cierto es que son muchos más valores que le podés agregar a tu cadena, en el siguiente link encontrarás todos: http://msdn.microsoft.com/es-es/library/system.data.sqlclient.sqlconnection.connectionstring(VS.80).aspx
ACCEDER DESDE VB.NET

Luego, en tu código, para acceder a la cadena es como sigue:



ALGO MÁS

Para que todo funcione,debes agregar la DLL System.Configuration a tu proyecto.
Compilas y ya.