 |
|
| Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XsnLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | FileType | xsn | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.2 | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.3 | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.4 | 255 | | View in Web Browser | /_layouts/images/ichtmxls.gif | /blog/msc/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 | 0x0 | 0x1 | FileType | xlsx | 255 | | View in Web Browser | /_layouts/images/ichtmxls.gif | /blog/msc/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 | 0x0 | 0x1 | FileType | xlsb | 255 | | Snapshot in Excel | /_layouts/images/ewr134.gif | /blog/msc/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&Snapshot=1 | 0x0 | 0x1 | FileType | xlsx | 256 | | Snapshot in Excel | /_layouts/images/ewr134.gif | /blog/msc/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&Snapshot=1 | 0x0 | 0x1 | FileType | xlsb | 256 |
|
|
| Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XsnLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | FileType | xsn | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.2 | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.3 | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.4 | 255 | | View in Web Browser | /_layouts/images/ichtmxls.gif | /blog/msc/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 | 0x0 | 0x1 | FileType | xlsx | 255 | | View in Web Browser | /_layouts/images/ichtmxls.gif | /blog/msc/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 | 0x0 | 0x1 | FileType | xlsb | 255 | | Snapshot in Excel | /_layouts/images/ewr134.gif | /blog/msc/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&Snapshot=1 | 0x0 | 0x1 | FileType | xlsx | 256 | | Snapshot in Excel | /_layouts/images/ewr134.gif | /blog/msc/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&Snapshot=1 | 0x0 | 0x1 | FileType | xlsb | 256 |
|
|
| Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XsnLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | FileType | xsn | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.2 | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.3 | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.4 | 255 | | View in Web Browser | /_layouts/images/ichtmxls.gif | /blog/msc/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 | 0x0 | 0x1 | FileType | xlsx | 255 | | View in Web Browser | /_layouts/images/ichtmxls.gif | /blog/msc/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 | 0x0 | 0x1 | FileType | xlsb | 255 | | Snapshot in Excel | /_layouts/images/ewr134.gif | /blog/msc/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&Snapshot=1 | 0x0 | 0x1 | FileType | xlsx | 256 | | Snapshot in Excel | /_layouts/images/ewr134.gif | /blog/msc/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&Snapshot=1 | 0x0 | 0x1 | FileType | xlsb | 256 |
|
|
|
 |
|
|
|
|
|
|
|
17/11/2008Vous 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:
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
Merci à Sébastien DG pour l'info 16/06/2008
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 29/05/2008
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
22/04/2008
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 17/04/2008
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 11/04/2008
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
Vous pouvez le trouver ici 6/04/2008
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 !!!
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"> </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
SharePoint Solution Generator est une petite application faisant partie de Windows SharePoint Services 3.0 Tools: Visual Studio 2005 Extensions permettant de générer vos site et list definition qui pourront par la suite très facilement être compilées et déployées sur vos fermes SharePoint.
Il génère automatiquement les fichiers AllItems.aspx, DispForm.aspx, NewForm.aspx, ... ainsi que le fichier schema.xml pour les list template (onet.xml pour les site definition)
Autant dire que cela vous fait gagner un temps non négligeable.
Un petit tool assez sympa qui vous permet de gérer vos application SharePoint, site collection, list, doc lib ...
Vous pouvez le trouver ici
| Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XsnLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | FileType | xsn | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.2 | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.3 | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.4 | 255 | | View in Web Browser | /_layouts/images/ichtmxls.gif | /blog/msc/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 | 0x0 | 0x1 | FileType | xlsx | 255 | | View in Web Browser | /_layouts/images/ichtmxls.gif | /blog/msc/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 | 0x0 | 0x1 | FileType | xlsb | 255 | | Snapshot in Excel | /_layouts/images/ewr134.gif | /blog/msc/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&Snapshot=1 | 0x0 | 0x1 | FileType | xlsx | 256 | | Snapshot in Excel | /_layouts/images/ewr134.gif | /blog/msc/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&Snapshot=1 | 0x0 | 0x1 | FileType | xlsb | 256 |
|
|
|
|
| Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XsnLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | FileType | xsn | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.2 | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.3 | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /blog/msc/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.4 | 255 | | View in Web Browser | /_layouts/images/ichtmxls.gif | /blog/msc/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 | 0x0 | 0x1 | FileType | xlsx | 255 | | View in Web Browser | /_layouts/images/ichtmxls.gif | /blog/msc/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 | 0x0 | 0x1 | FileType | xlsb | 255 | | Snapshot in Excel | /_layouts/images/ewr134.gif | /blog/msc/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&Snapshot=1 | 0x0 | 0x1 | FileType | xlsx | 256 | | Snapshot in Excel | /_layouts/images/ewr134.gif | /blog/msc/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&Snapshot=1 | 0x0 | 0x1 | FileType | xlsb | 256 |
|
|
|
|
|
|
|
|