 |
|
| 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 |
|
|
|
 |
|
|
|
|
|
|
|
4/12/2008Vous 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.
26/11/2008
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>
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
| 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 |
|
|
|
|
|
|
|
|