novembre
2011
Un Control Adapter permet de modifier l’apparence de contrôles en récupérant le flux HTML généré par celui-ci.
Dans le cadre de SharePoint on peut du coup l’utiliser pour venir modifier l’apparence de certains contrôles natifs.
Pour cela, il faut créer une classe qui héritera de la classe ControlAdapter (dans l’espace de noms System.Web.UI.Adapters) et venir redéfinir la méthode Render :
public class InputFormDropDownListAdapter : ControlAdapter { protected override void Render(System.Web.UI.HtmlTextWriter writer) { StringBuilder sb = new StringBuilder(); HtmlTextWriter htw = new HtmlTextWriter(new StringWriter(sb)); base.Render(htw); string stringToWrite = sb.ToString(); //Modifier la chaine "stringToWrite" à écrire dans le rendu du contrôle... writer.Write(stringToWrite); } }
Il faut maintenant mettre en place la prise en compte de ce ControlAdapter par le navigateur.
Pour cela, il faut se placer dans le constructeur de la masterPage
qui sera utilisée par SharePoint :
public SiteMaster() { var adapters = HttpContext.Current.Request.Browser.Adapters; var key = typeof(Microsoft.SharePoint.Portal.WebControls.InputFormDropDownList).AssemblyQualifiedName; if (!adapters.Contains(key)) { var adapter = typeof(InputFormDropDownListAdapter).AssemblyQualifiedName; adapters.Add(key, adapter); } }
La clé de l’entrée du dictionnaire correspond au nom de l’assembly du type du contrôle dont
on viendra modifier l’apparence.
La valeur de l’entrée du dictionnaire correspond au nom de l’assembly du controlAdapter
que l’on a développé plus haut.
Il est ainsi possible de modifier l’apparence des contrôles natifs de SharePoint…