vendredi 12 mars 2010

Effectuer un postback complet de la page à partir d'un UpdatePanel

L'UpdatePanel permet d'actualiser certaines parties de la page sans pour autant rafraîchir toute la page. Les postbacks, effectués par les contrôles à l'intérieur de l'UpdatePanel, seront gérés par l'UpdatePanel, ce qui aura pour effet d'actualiser partiellement la page. Il peut toute fois arrivé dans des cas précis qu'il faille rafraîchir toute la page. Dans ce cas vous pouvez, dans le code-behind de votre page, ajouter le code suivant :
ScriptManager.RegisterClientScriptBlock(Page, typeof(Page),"PagePostBack","window.location.href='" + Request.Url.ToString() + "';", true);
L'instruction ci-dessus enregistre un script de redirection qui sera exécuté côté client lors de l'actualisation de l'UpdatePanel.

lundi 1 mars 2010

Sauvegarder manuellement une données saisies par un PeopleEditor

Supposons que nous avons un PeopleEditor configuré comme suit :
<%@ Register Tagprefix="SharePoint"  Namespace="Microsoft.SharePoint.WebControls"  Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral,  PublicKeyToken=71e9bce111e9429c" %>
<SharePoint:PeopleEditor id="peopleEditorEmployee" runat="server" autopostback="true" allowempty="false" placebuttonsunderentityeditor="false" rows="1" selectionset="User" multiselect="false">

Le contrôle ci-dessus permet de sélectionner seulement un utilisateur SharePoint et la sélection d'un utilisateur est obligatoire.

Code-behind :
(PickerEntity)peoplePickerEmploye.ResolvedEntities[0];
String result = employee.EntityData["SPUserID"].ToString() + ";#" + employee.EntityData["DisplayName"].ToString();
SPListItem itemToModified = SPContext.Current.Web.Lists["<Votre liste>"].GetItemById(int_id);
itemToModified["Champ a mettre à jour"] = result;
itemToModified.Update();