Skip to main content

Le blog de Michael Schouveller

Go Search
Home
  

 Image Web Part

Schouveller Michael
SharePoint sous vista
Vous allez me dire que ce n'est pas possible et si ça l'est, bamboo a développé un setup permettant d'installer SharePoint sous vista.
 
SharePoint DateTimeControl Validator
J'ai utilisé le control sharepoint DateTimeControl sur des pages web, je voulais y ajouter un RequiredFieldValidator asp.
 
Le problème était que le validateur ne fonctionnait pas avec un DateTimeControl sharepoint, j'avais systématiquement l'erreur suivante
 
Control 'dtcBirthday' referenced by the ControlToValidate property of 'RequiredFieldValidator2' cannot be validated.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Web.HttpException: Control 'dtcBirthday' referenced by the ControlToValidate property of 'RequiredFieldValidator2' cannot be validated
 
Le problème réside dans le fait qu'un DateTimeControl est en fait un control composé d'un TextBox et d'une dropdown calendrier. SharePoint assigne au textbox un id propre sous la forme suivante: nom du control suivi d'un $ suivi du nom du control suivi de "Date".
 
Sachant cela il est alors possible d'utiliser des validateurs asp en spécifiant l'id du textbox à la propriété ControlToValidate
 
Voici mon exemple

<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="dtcBirthday$dtcBirthdayDate"

ErrorMessage="Birthday cannot be empty" ValidationGroup="birthday">

</asp:RequiredFieldValidator>

 
SharePoint Picker Dialog
Vous connaissez probablement tous et toutes le contrôle PickerDialog de SharePoint, si vous ne le connaissez pas vous l'avez déjà utilisé ne serait ce que pour rechercher un utilisateur.
 
Voici à quoi celui-ci ressemble:
Default
 
Ce que vous ne savez peut-être pas, c'est que ce PickerDialog peut être bien plus efficace que ce qu'il ne fait.
 
En effet celui-ci pourrait très bien être utilisé dans bien d'autres situations comme par exemple remplacer le système de BDC pour une restitution de données, remplacer une dropdownlist qui pourrait être très très (trop) longue, ...
 
Comment ? Il est possible et aisé d'overrider ce control de manière à l'utiliser sur une source de données quelconque (DB, List, ...).
 
Héritez de EntityEditorWithPicker afin de déterminer le type de la boîte de dialogue, de PickerDialog pour modifier l'apparence des résultats de la recherche et de SimpleQueryControl afin de déterminer la logique pour récupérer vos données en overridant la méthode IssueQuery
 
L'exemple ci-dessous montre le résultat du Dialog Picker connecté à une simple liste SharePoint mais aurait très bien pu se connecter sur n'importe quelle source de données
 
result
 
Merci à Sébastien DG pour l'info
SharePoint Spin Wheel
Evitez que l'utilisateur impatient ne clique partout lorsqu'une tâche plus ou moins gourmante en terme de temps est exécutée.
Pour cela vous pouvez afficher le "Spin Wheel" de SharePoint en implémentant la classe SPLongOperation comme suit:
 
using (SPLongOperation operation = new SPLongOperation(this.Page))

{

        operation.LeadingHTML = "SomeText";

        operation.TrailingHTML = "SomeOtherText";

        operation.Begin();

                

        // rest of the code . . .

               

        operation.End(redirectUrl);

}

 

Vous pouvez personnaliser l'affichage en modifiant les propriétés LeadingHTML et TrailingHTML
IE7 Quick Tabs
Si comme moi vous avez la facheuse tendance à ouvrir énormément de nouveaux onglets lorsque vous naviguer avec Internet Explorer 7, le quick tabs est la solution qui vous permettra de retrouver vos petits beaucoup plus facilement.
 
Pour cela utlisisez le raccourci CTRL + Q, cela vous donnera une vue des différents onglets ouverts sous forme de vignettes.
 
Voici ce que cela donne
 
Quick Tabs
Attacher le process w3wp.exe en un click
Voici un bout de code qui permet d'attacher le process w3wp en un click, il suffit de créer une macro dans visual studio et de l'ajouter à une toolbar
 

Public Module AttachModule
    Sub AttachToW3WP()
        Try
            Dim dbg2 As EnvDTE80.Debugger2 = DTE.Debugger
            Dim trans As EnvDTE80.Transport = dbg2.Transports.Item("Default")
            Dim dbgeng(3) As EnvDTE80.Engine
            dbgeng(0) = trans.Engines.Item("T-SQL")
            dbgeng(1) = trans.Engines.Item("T-SQL")
            dbgeng(2) = trans.Engines.Item("Managed")
            Dim proc2 As EnvDTE80.Process2 = dbg2.GetProcesses(trans, "ServerName").Item("w3wp.exe")
            proc2.Attach2(dbgeng)        
        Catch
ex As System.Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Module

Clone d'objet
Pour cloner un objet, il suffit d'implémenter l'interface ICloneable et sa méthode Clone ().
Il est possible de cloner de manière partielle (shallow clone) ou de manière complète (deep clone).
Dans un Shallow clone, seuls les objets de niveau suppérieur sont clonés, les autres contiennent des références. Pour cela utiliser la méthode MemberwiseClone()
Pour la méthode deep clone il vous faudra implémenter vous même IDisposable
 
Pour la méthode Shallow, voici une petit exemple très basique

public class Person : ICloneable
{
    private string _firstName = "";
   
private string _surName = "";
   
private int? _age = null;

    public
Person() { }
    
   
public Person(string surName, string firstName, int? age)
    {
        _firstName = firstName;
        _surName = surName;
        _age = age;
    }

    public string FirstName
    {
       
get { return _firstName; }
       
set { _firstName = value; }
    }

    public string SurName
    {
       
get { return _surName; }
       
set { _surName = value; }
    }

    public int? Age
    {
       
get { return _age == null ? 0 : _age; }
       
set { _age = value; }
    }

    public Object Clone()
    {
       
return this.MemberwiseClone();
    }
}

 

un exemple d'exécution:

Person p1 = new Person("Schouveller", "Michael", 28);
Person p2 = null;
Person p3 = null;

Console.WriteLine("P1: Firstname = {0} Surname = {1} Age = {2}", p1.FirstName, p1.SurName, p1.Age.ToString());

p2 = p1;
p2.Age = 33;
p3 = (
Person)p1.Clone();
p3.Age = 50;

Console.WriteLine("P1: Firstname = {0} Surname = {1} Age = {2}", p1.FirstName, p1.SurName, p1.Age.ToString());
Console.WriteLine("P2: Firstname = {0} Surname = {1} Age = {2}", p2.FirstName, p2.SurName, p2.Age.ToString());
Console.WriteLine("P1: Firstname = {0} Surname = {1} Age = {2}", p1.FirstName, p1.SurName, p1.Age.ToString());
Console.WriteLine("P3: Firstname = {0} Surname = {1} Age = {2}", p3.FirstName, p3.SurName, p3.Age.ToString());

 

Le résultat donne ceci

P1: Firstname = Michael Surname = Schouveller Age = 28
P1: Firstname = Michael Surname = Schouveller Age = 33
P2: Firstname = Michael Surname = Schouveller Age = 33

P1: Firstname = Michael Surname = Schouveller Age = 33
P3: Firstname = Michael Surname = Schouveller Age = 50

Notez que l'age du 3ème P1 vaut toujours 33 et que celui de P3 vaut lui 50.
P3 et P1 n'ont donc plus la même référence

Advanced Text Editor component
FCKEditor est un composant web très sympa qui vous permet d'utiliser les fonctions avancées disponibles dans les richtextbox (comme c'est également le cas dans Word ...)
 
Il existe des versions compatibles pour: ASP, ASP.Net, PHP, JAVA, ...
 
Voici ce que cela donne
 
FCKEditor HTML Component
 
Vous pouvez le trouver ici
Gérer les extensions de fichier bloquées par SharePoint de manière programmatique
SharePoint bloque par défaut un certain nombre d'extensions de fichier (86 extensions je pense) telles que .exe, .bat, ...
Cela peut être géré ici:
Central d'administration page > Security configuration > Manage blocked file types.
 
Vous pouvez également très facilement gérer cela de manière programmatique en récupérant une Collection de string sur votre object SPWebApplication comme ceci

SPWebApplication myWebApp = SPWebApplication.Lookup(myUri);
Collection<string> blockFileTypes = myWebApp.BlockedFileExtensions;
 
Une fois les extensions récupérées vous pouvez ajouter/supprimer/modifier ... celles-ci comme ceci:

blockFileTypes.Add(myBlockFileType);
 
puis il suffit de mettre à jour votre objet SPWebApplication

myWebApp.Update();
Une manière très simple de permettre à certains utilisateurs de gérer ces extensions sans pour autant devoir accéder à la central d'admin !!!
Arretez de chercher après les classes CSS
Voici un script qui affiche au MouseOver le nom des classes CSS utilisées par SharePoint
 
<script language="jscript">
function ClassInfo()
{
    if (window.event.srcElement.className != null)
    {
        stsclass.innerText = window.event.srcElement.className;
    }
    else
    {
        stsclass.innerText = "";
    }
}
 
window.document.body.onmouseover = ClassInfo;</script>
 
<div style="border-style:solid;border-width:1px; width: 281px; height: 34px;
position: absolute; left: 286px; top: 41px; z-index:15; padding-left:4px;
padding-right:4px; padding-top:2px; padding-bottom:2px; background-color:#EEEEF4">
<p id="stsclasstitle"><font face="Tahoma" id="stsclasstitle">Classname: </font>
<font face="Tahoma"id="stsclass">&#xa0;</font>
</p></div>
 
Vous trouverez comment l'utiliser ici ou encore ajouter une Content Editor WebPart et coller ce script dans le Source Editor de cette WebPart
 
Vous trouverez également ici un tableau des différents CSS utilisé par SharePoint et leur signification
1 - 10 Next

 Derniers posts

Expand/Collapse Category.NET ‎(1)
Clone d'objetUse SHIFT+ENTER to open the menu (new window).
17/04/2008 0:14
Expand/Collapse CategoryComposant HTML ‎(1)
Advanced Text Editor componentUse SHIFT+ENTER to open the menu (new window).
11/04/2008 17:10
Expand/Collapse CategoryIE ‎(1)
IE7 Quick TabsUse SHIFT+ENTER to open the menu (new window).
29/05/2008 18:49
Expand/Collapse CategorySharePoint ‎(9)
SharePoint sous vistaUse SHIFT+ENTER to open the menu (new window).New
4/12/2008 15:02
SharePoint DateTimeControl ValidatorUse SHIFT+ENTER to open the menu (new window).
26/11/2008 14:57
SharePoint Picker DialogUse SHIFT+ENTER to open the menu (new window).
17/11/2008 1:21
SharePoint Spin WheelUse SHIFT+ENTER to open the menu (new window).
16/06/2008 16:00
Gérer les extensions de fichier bloquées par SharePoint de manière programmatiqueUse SHIFT+ENTER to open the menu (new window).
6/04/2008 1:18
Arretez de chercher après les classes CSSUse SHIFT+ENTER to open the menu (new window).
6/04/2008 1:08
SharePoint Solution GeneratorUse SHIFT+ENTER to open the menu (new window).
6/04/2008 0:44
1 - 10 Next

 ‭(Hidden)‬ Admin Links