miércoles, 29 de septiembre de 2010

Asynchronous client script callbacks

Para hacer llamadas al servidor sin refrescar la página manejándolo nosotros mismos (otra alternativa es usar AJAX) Ejemplos y tutoriales en
Se puede pasar un string al servidor, y recibir como respuesta otro string

Hay que implementar la interfaz ICallbackEventHandler, con dos métodos
  • Método RaiseCallbackEvent: Es llamado automáticamente cuando se produce un Callback al servidor mediante Script. Se le pasa como parámetro una cadena que se genera en el lado de cliente (en el navegador) antes del envío
  • Método GetCallbackResult: este es el método que se llama automáticamente para devolver los resultados al cliente. Dichos resultados se devuelven en forma de cadena (es el tipo devuelto por el método) y se pasan a una función JavaScript en el cliente. Es decir, en esta cadena podemos meter cualquier cosa en el formato que deseemos: valores separados por comas, XML, JSON, etc
Ejemplo

En la página aspx poner
  • en el HEAD el javascript
<script type ="text/javascript"> function ClientCallbackFunction(arg, ctx) { document.all.txtDesc.value = arg; } </script>
  • en el BODY, en el control que deseamos haga la llamada al servidor

<asp:DropDownList ID="ddlAsync" runat="server" Width="110px" onclick="return DoTheCallback(document.all.ddlAsync.value,0);">
En el codebehind aspx.cs poner
  • Implementar la Interfaz ICallbackEventHandler

public partial class _Default : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler

  • En la carga de la página registrar el script DoTheCallBack para la página aspx, que es la función que hará la llamada al servidor, y hará que este RaiseCallbackEvent y devuelva un string al ejecutar GetCallBackResult y dispare ClientCallbackFunction

protected void Page_Load(object sender, EventArgs e) {
string js = Page.ClientScript.GetCallbackEventReference(this, "arg", "ClientCallbackFunction", "ctx", true);
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("function DoTheCallback(arg, ctx) {");
sb.Append(js); sb.Append("}");
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "callbackkey", sb.ToString(), true); }

  • Los dos métodos de ICallBackEventHandler
public void RaiseCallbackEvent(String eventArgument) { valor = eventArgument; }
public String GetCallbackResult() { return "El servidor ha devuelto: " valor; }

Pasos de ejecución
  • Primer Load de la página. Se incluye el script en la página web

<script type="text/javascript"> //<![CDATA[ function DoTheCallback(arg, ctx) {WebForm_DoCallback('__Page',arg,ClientCallbackFunction,ctx,null,true)}//]]> </script>

  • Al seleccionar una opción en el control DropDownList se disparan los eventos

    • Script DoTheCallBack envía dato al servidor
    • Método RaiseCallbackEvent lee el dato y lo procesa
    • Método GetCallBackResult devuelve una respuesta al cliente
    • Script ClientCallbackFunction toma la respuesta del servidor

viernes, 24 de septiembre de 2010

Usar SQL Server 2008 Express para la Base de Datos

Instalación
SQL Server 2008 Express sirve como Base de Datos para las aplicaciones ASP.NET. Podemos tenerlo en local, mientras que en el hosting tenemos el SQL Server 2008 normal. Tiene alguna limitación como la capacidad máxima de 2 GB.
  • Descargar la instalación desde http://www.microsoft.com/express/database/ (64 bits)
    (probablemente requiera instalar actualizaciones y reiniciar previamente)
  • Si hay errores solucionarlos, y pulsar 'ReRun'
  • Indicar el nombre de la instancia, por ejemplo SQLLOCAL y se instalará en C:\Program Files\Microsoft SQL Server\
  • Poner la cuenta en modo mixto, e introducir usuario y contraseña.

Errores de instalación

Performance Counter Registry Hive Consistency
Windows Power Shell not installed
SQL Server 2008 R2 Management Studio

Se puede usar para recuperar una Base de Datos Remota (en un hosting) a el servicio SQL en Local.

Errores de Recuperación

No permite recuperar el fichero FULL TEXT
Conectar ASP.NET a una BBDD Local