Obtenir la definició d’una llista de Sharepoint

Rating_1
La definició de les llistes de Sharepoint, aquell Schema.xml, és la cosa més impracticable que es podien haver inventat.
Obviament estic parlant de quant volem crear llistes utilitzan el Visual Studio 2010. No entenc perquè no existeix cap eina tipus Wizard que ens ajudi a generar una definició de llista en el Visual Studio sabent que són tant complicades d’entendre i més encara de escriure a mà.

Per sort, sempre hi ha solucions. El mateix Sharepoint té un servei anomenat owssvr.dll que ens retorna la definició d’una llista que existeix en un site de Sharepoint.

Per tant els passos son:
1er) Crea la llista utilitzant la interface Sharepoint
2on) Visita la següent página i descarrega el .XML que conté la definició de la llista.
http://YOUR_SERVER_URL/PATH_TO_SITE_CONTAINING_LIST/_vti_bin/owssvr.dll?Cmd=ExportList&List={YOUR_LIST_GUID}

Funciona tant per Sharepoint 2007 com 2010

Easy 😉

Coneixes alguna altre manera?

Anuncis

Windows 8, Visual Studio 2012 and Sql Server 2012 Express

aa972637_Feature_SQL08_386x242

With new Visual Studio 2012 a short version of Sql Server 2012 called LocalDB is installed on your PC.

If you are running Windows 8 and you want to use all features of Sql Server 2012 you must install Sql Server Express 2012 Express (or if you can, Sql Server Express 2012) but ensure you that it’s Sql Server Express 2012 SP1. Yes, without SP1 a weird message is displayed when you try to install.

Here, I put the link to downloading the right version:

http://msdn.microsoft.com/en-us/evalcenter/hh230763.aspx

Validar toda la página y pedir confirmación después

untitled

A veces puede ser útil pedir una confirmación de si se quiere enviar los datos al servidor o no. En este caso uno de los procedimientos habituales es poner en el evento Html onclick del botón que genera submit un return pedir_confirmacion(). El pedir_confirmacion es una función en Javascript que debe devolver true en caso de querer enviar o false en caso contrario.

El problema esta cuando la página contiene controles de validación ASP.NET. La validación se produce después del evento Html onclick y justo antes de realizarse el postback al servidor. El comportamiento es que se pregunta por si se quiere enviar o no y si respondes afirmativamente después se hace la validación del formulario a nivel de cliente y si nos da errores el formulario no se envía cuando el usuario espera a que si.

Para solventarlo necesitamos realizar la validación a nivel de cliente de todos los controles de validación que hay en la página.

<script type="text/javascript">

function pedir_confirmacion() {

  Page_ClientValidate();

  if (Page_IsValid) {

    return confirm('Estas seguro?');

  }

  else {

    return false;

  }

}

</script>

También puedes consultar la MSDN para aprender la API de cliente para las validaciones.

ASP.NET Validation in Depth

 

Más información :

Determine if page is valid in JavaScript – ASP.NET

Ajax i download file

descarga

Amb .Net utilitzar Ajax és super senzill, tant sols hem de col·locar un control UpdatePanel i tota la resta és el mateix.

Però hi ha un cas que no deixa de ser curiós. Quan un postback retorna una cadena binaria que representa un fitxer els UpdatePanels fan que no funcioni adequadament. Normal, hem de tenir present que els UpdatePanel serveixen perquè el contingut del seu interior s’actualitzi i no pas per descarregar fitxers. Hi hi algunes tècniques que ho poden fer però no deixa de ser alternatives sobre les eines que disposes.

Una de les maneres més senzilles és dir-l’hi a l’UpdatePanel que al accionar el botó de descarrega executi un Postback enlloc de un AsyncPostback. Per això té el triggers, per assignar controls de la pàgina per tal de que provoquin un postback complet de la pàgina.

Però en el cas de tenir un ListView o qualsevol altre control que encapsuli controls la unica manera és fer-ho des de codi. Però els update panels no els hi agrada massa que els hi toquis els triggers per codi. Que no et fa cas vaja.

Llavors ens queda una opció que per mi és molt fina i neta. Utilitzar ScriptManager per indicar que l’event click del botó es fagi per Postback i no pas per AsyncPostback
ScriptManager.GetCurrent(this.Page).RegisterPostBackControl(this.lnkDownload);

Posa aquest tros de codi en l’event DataBound del teu control ListView. Fàcil i funciona.

 

Més informació:

Download feature not working within update panel in asp.net

Simple way to do File download with UpdatePanel and overlay ProgressIndicator

 

Añadir eventos propios en controles y que generen postback

descarga

El otro día trabajando en un proyecto con Sharepoint necesité capturar eventos que existen en el control HTML y que no se capturan des de servidor como por ejemplo la perdida del foco en el control (onBlur). Buscando como podía hacerlo me encontré con estas páginas que explican como crear controles que puedan capturar el evento onBlur en questión. Pero que además ya puedes exportarlo a poder crear cualquier otro tipo de evento que ahora no se captura. Me ha sorprendido lo senzillo que es.

Consultalo tu mismo:

Extending the asp.net textbox to have an OnBlur server side event.

ASP.NET TextBox LostFocus event