Meilleur auteur de réponses
Disparition des affichages (sans spd ou fp)

Question
-
Bonjour,
J'ai un soucis avec Sharepoint (MOSS), Les vue de ma bibliothèque de document disparaissent au fur et a mesure du développement. J'entend par la qu'elles sont toujours adressables (une navigation sur l'url fonctionne) mais l'édition de la liste ne montre plus l'affchage.
De ce que j'ai pu voir sur Internet, cela se produit quand on édite avec Sharepoint Designer ou Frontpage ... ce que je ne fait pas.
Quelqu'un sait-il comment faire pour retrouver mes vues ?
merci.
Réponses
-
Hello,
Merci bien.
Effectivement c'était du au fait que mes affichages étaient devenus cachés.
Par contre la modif dans Sharepoint Designer ne fonctionne pas. En effet cela rend bien l'affichage visible mais la page est cassée.
J'ai donc écrit un programme console permettant de balayer les listes et leurs affichages pour changer cette propriétée en fonction du chois de l'utilisateur.
Exemple d'execution:
C:\Development\CSDN\WssListHideToggle\WssListHideToggle\bin\Release>WssListHideT
oggle.exe http://wmoss/Test
Sharepoint list hidden flag toggle
(C) 2008 Archimed/Neolage
Should process list "Actions" (y/n) ? n
Should process list "Dossiers" (y/n) ? y
view "Tous les documents" is hidden. Should (k)eep ou (c)hange (k/c) ? c
view "Mode Explorateur" is hidden. Should (k)eep ou (c)hange (k/c) ? k
view "Fusionner les documents" is hidden. Should (k)eep ou (c)hange (k/c) ? k
view "Recréer un lien entre ces documents" is hidden. Should (k)eep ou (c)hange
(k/c) ? k
view "Clos" is hidden. Should (k)eep ou (c)hange (k/c) ? k
view "Récents" is hidden. Should (k)eep ou (c)hange (k/c) ? k
view "<unknown>" is hidden. Should (k)eep ou (c)hange (k/c) ? k
Should process list "Galerie de pages maîtres" (y/n) ? n
Should process list "Historique des flux de travail" (y/n) ? n
Should process list "Tâches" (y/n) ? nCode :
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;namespace WssListHideToggle
{
/// <summary>
/// Entrée de l'exe
/// </summary>
class Program
{
/// <summary>
/// Codes de sortie
/// </summary>
private enum ExitCode
{
None=0,
Unknown=1,
NotEnoughtArgument=2,
OneQuote=3,
CantOpenSite=4
}/// <summary>
/// Entrée de l'application console
/// </summary>
/// <param name="args">Arguments passés sur la ligne de commande</param>
static void Main(string[] args)
{
// Annonce
Console.ForegroundColor=ConsoleColor.White;
Console.WriteLine("Sharepoint list hidden flag toggle");
Console.ForegroundColor=ConsoleColor.Gray;// Vérification des arguments
if (args.Length < 1)
Error("Not enought argument", true,true, ExitCode.NotEnoughtArgument);
// On a un seul argument mais qui peut avoir était saisie avec des espaces => on concatène tout
string url = string.Join(" ", args);
// On supprime les éventuelles quotes
if (url[0] == '"' && url[url.Length - 1] == '"')
url = url.Substring(0, url.Length - 2);
// Il peut y avoir une erreur de saisie : une seule guillemet
if (url[0] == '"' || url[url.Length - 1] == '"')
Error("You have specified only one '\"'", true, true, ExitCode.OneQuote);// Connexion au site
SPSite site = null;
SPWeb web = null;
if(!Connect(url,out site,out web))
Error(string.Format("Can't open site {0}", url), false, true, ExitCode.CantOpenSite);
using (site)
{
using (web)
{
try
{
SPListCollection lists = web.Lists;
// Copy dans un tableau pour pouvoir enumérer sans avoir d'erreur sur le Update d'une vue
SPList[] listArray = new SPList[lists.Count];
for (int i = 0; i < lists.Count; i++)
listArray= lists
;
foreach (SPList list in listArray)
{
// lecture du nom de la liste
string listTitle=null;
try { listTitle=list.Title; } catch { listTitle="<unknown>"; }
if (string.IsNullOrEmpty(listTitle)) listTitle = "<unknown>";// traitement de la liste
try
{
if (isProcessList(listTitle)) ProcessList(list);
}
catch(Exception ex)
{
Error(string.Format("Error processing list \"{0}\" : {1}",listTitle,ex.Message),false,false,ExitCode.None);
}
}
}
catch(Exception ex)
{
Error(string.Format("Unknown error : {0}", ex.Message), false, true, ExitCode.Unknown);
}
}
}
}/// <summary>
/// Traitement de la liste
/// </summary>
/// <param name="list">Liste a traiter</param>
private static void ProcessList(SPList list)
{
SPViewCollection views=list.Views;
// Copy dans un tableau pour pouvoir enumérer sans avoir d'erreur sur le Update d'une vue
SPView[] viewArray = new SPView[views.Count];
for (int i = 0; i < views.Count; i++)
viewArray= views
;
// Ballayage du tableau
foreach (SPView view in viewArray)
{
// lecture du nom de la vue
string viewTitle = null;
try { viewTitle = view.Title; }
catch { viewTitle = "<unknown>"; }
if (string.IsNullOrEmpty(viewTitle)) viewTitle = "<unknown>";// traitement de la vue
try
{
ProcessView(viewTitle,view);
}
catch(Exception ex)
{
Error(string.Format("Error processing view \"{0}\" : {1}", viewTitle,ex.Message), false, false, ExitCode.None);
}
}
}/// <summary>
/// Traite une vue
/// </summary>
/// <param name="viewTitle">Titre de la vue</param>
/// <param name="view">Vue</param>
private static void ProcessView(string viewTitle,SPView view)
{
bool isHidden = view.Hidden;
ConsoleKeyInfo key;
do
{
Console.Write(string.Format("view \"{0}\" is {1}. Should (k)eep ou (c)hange (k/c) ? ", viewTitle, isHidden?"hidden":"visible"));
key = Console.ReadKey();
} while (key.KeyChar != 'k' && key.KeyChar != 'c');
Console.WriteLine("");
if (key.KeyChar == 'c')
{
view.Hidden = !isHidden;
view.Update();
}
}/// <summary>
/// Doit-on traiter la liste ?
/// </summary>
/// <param name="listTitle">Liste que l'on doit géré</param>
/// <returns>Vrais si elle est a traiter</returns>
private static bool isProcessList(string listTitle)
{
ConsoleKeyInfo key;
Console.ForegroundColor = ConsoleColor.White;
do
{
Console.Write(string.Format("Should process list \"{0}\" (y/n) ? ", listTitle));
key = Console.ReadKey();
} while (key.KeyChar != 'y' && key.KeyChar != 'n');
Console.WriteLine("");
Console.ForegroundColor = ConsoleColor.Gray;
return key.KeyChar == 'y';
}/// <summary>
/// Connexion au site Sharepoint
/// </summary>
/// <param name="url">url du site</param>
/// <param name="site">Site retourné</param>
/// <param name="web">Web retourné</param>
/// <returns></returns>
private static bool Connect(string url, out SPSite site, out SPWeb web)
{
site = null;
web = null;
try
{
site = new SPSite(url);
web = site.OpenWeb();
}
catch
{
try { if (web != null) web.Dispose(); } catch {}
try { if (site != null) site.Dispose(); } catch { }
return false;
}
return true;
}/// <summary>
/// Affiche une erreur
/// </summary>
/// <param name="msg">Message d'erreur</param>
/// <param name="syntax">Rappel la syntaxe ?</param>
/// <param name="quit">Quitte l'application</param>
/// <param name="exitCode">Code de sortie</param>
private static void Error(string msg, bool syntax, bool quit, ExitCode exitCode)
{
// Message
Console.ForegroundColor = ConsoleColor.Red;
Console.Write(msg);
Console.ForegroundColor = ConsoleColor.Gray;// Rappel de la syntaxe
if (syntax)
Console.WriteLine(
string.Format("{0} SiteUrl\n\tSiteUrl : Site url",
typeof(Program).Assembly.CodeBase)
);// Sortie
if(quit) Environment.Exit((int)exitCode);
}
}
}
Toutes les réponses
-
Y'a une astuce un peu "barbare" pour remettre l'affichage des vues
Dans le code de génération de la webpart (depuis SPD, quand tu sélectionnes la webpart depuis la vue design, du code est sélectionné dans la partie code), tu trouveras une balise de ce type :
....
à l'intérieur de cette balise, pas très loin de là, tu trouveras un attribut qui dans ton cas sera :
Code SnippetDefaultView=""
Il faut mettre à la place :
Code SnippetDefaultView="TRUE"Puis un autre attribut :
Code SnippetDisplayName="All Documents"
Je ne me rappelle plus si tu auras l'indication "All Documents", mais ici, tu mets le nom de la vue par défaut.
Avec ces deux petites manip, tu devrais pouvoir t'en sortir (de mémoire...).
Merci de me dire si c'est ok ou non...
-
Bonjour,
J'ai éditer la page AllItems.aspx et j'ai effectivement trouver ces informations ... mais déjà remplies :
Code Snippet<ListViewXml xmlns="http://schemas.microsoft.com/WebPart/v2/ListView"><View Name="{79191121-BBCF-4991-91D4-D37888DEEDE2}" DefaultView="TRUE" MobileView="TRUE" MobileDefaultView="TRUE" Type="HTML" Hidden="TRUE" DisplayName="Tous les documents" Url="/Test/Dossiers/Forms/AllItems.aspx" Level="1" BaseViewID="1" ContentTypeID="0x" ImageUrl="/_layouts/images/dlicon.png"><ViewFields><FieldRef Name="DocIcon"/>< ...
En fait il m'affiche correctement cette page a part que outre "Tous les documents", la liste des vues est vide.
Mais surtout lors de l'edition de la bibliothèque _layouts/listedit.aspx, il n'indique aucune vue (il y en a plusieurs en réalité).
Cela me pose problème pour le cas d'utilisation suivant : Quand on affiche les propriétés d'un dossier, son nom est sous forme de lien. C'est une url de type REST (site/bibliothèque/dossier) qui est normalement transformé par sharepoint pour afficher le contenu du dossier dans la vue par défaut (site/bibliotheque/Forms/AllItems.aspx?RootFilder=...) hors comme il ne voit plus de vue ... il ne trasforme pas et ... 404
-
-
Hello,
Merci bien.
Effectivement c'était du au fait que mes affichages étaient devenus cachés.
Par contre la modif dans Sharepoint Designer ne fonctionne pas. En effet cela rend bien l'affichage visible mais la page est cassée.
J'ai donc écrit un programme console permettant de balayer les listes et leurs affichages pour changer cette propriétée en fonction du chois de l'utilisateur.
Exemple d'execution:
C:\Development\CSDN\WssListHideToggle\WssListHideToggle\bin\Release>WssListHideT
oggle.exe http://wmoss/Test
Sharepoint list hidden flag toggle
(C) 2008 Archimed/Neolage
Should process list "Actions" (y/n) ? n
Should process list "Dossiers" (y/n) ? y
view "Tous les documents" is hidden. Should (k)eep ou (c)hange (k/c) ? c
view "Mode Explorateur" is hidden. Should (k)eep ou (c)hange (k/c) ? k
view "Fusionner les documents" is hidden. Should (k)eep ou (c)hange (k/c) ? k
view "Recréer un lien entre ces documents" is hidden. Should (k)eep ou (c)hange
(k/c) ? k
view "Clos" is hidden. Should (k)eep ou (c)hange (k/c) ? k
view "Récents" is hidden. Should (k)eep ou (c)hange (k/c) ? k
view "<unknown>" is hidden. Should (k)eep ou (c)hange (k/c) ? k
Should process list "Galerie de pages maîtres" (y/n) ? n
Should process list "Historique des flux de travail" (y/n) ? n
Should process list "Tâches" (y/n) ? nCode :
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;namespace WssListHideToggle
{
/// <summary>
/// Entrée de l'exe
/// </summary>
class Program
{
/// <summary>
/// Codes de sortie
/// </summary>
private enum ExitCode
{
None=0,
Unknown=1,
NotEnoughtArgument=2,
OneQuote=3,
CantOpenSite=4
}/// <summary>
/// Entrée de l'application console
/// </summary>
/// <param name="args">Arguments passés sur la ligne de commande</param>
static void Main(string[] args)
{
// Annonce
Console.ForegroundColor=ConsoleColor.White;
Console.WriteLine("Sharepoint list hidden flag toggle");
Console.ForegroundColor=ConsoleColor.Gray;// Vérification des arguments
if (args.Length < 1)
Error("Not enought argument", true,true, ExitCode.NotEnoughtArgument);
// On a un seul argument mais qui peut avoir était saisie avec des espaces => on concatène tout
string url = string.Join(" ", args);
// On supprime les éventuelles quotes
if (url[0] == '"' && url[url.Length - 1] == '"')
url = url.Substring(0, url.Length - 2);
// Il peut y avoir une erreur de saisie : une seule guillemet
if (url[0] == '"' || url[url.Length - 1] == '"')
Error("You have specified only one '\"'", true, true, ExitCode.OneQuote);// Connexion au site
SPSite site = null;
SPWeb web = null;
if(!Connect(url,out site,out web))
Error(string.Format("Can't open site {0}", url), false, true, ExitCode.CantOpenSite);
using (site)
{
using (web)
{
try
{
SPListCollection lists = web.Lists;
// Copy dans un tableau pour pouvoir enumérer sans avoir d'erreur sur le Update d'une vue
SPList[] listArray = new SPList[lists.Count];
for (int i = 0; i < lists.Count; i++)
listArray= lists
;
foreach (SPList list in listArray)
{
// lecture du nom de la liste
string listTitle=null;
try { listTitle=list.Title; } catch { listTitle="<unknown>"; }
if (string.IsNullOrEmpty(listTitle)) listTitle = "<unknown>";// traitement de la liste
try
{
if (isProcessList(listTitle)) ProcessList(list);
}
catch(Exception ex)
{
Error(string.Format("Error processing list \"{0}\" : {1}",listTitle,ex.Message),false,false,ExitCode.None);
}
}
}
catch(Exception ex)
{
Error(string.Format("Unknown error : {0}", ex.Message), false, true, ExitCode.Unknown);
}
}
}
}/// <summary>
/// Traitement de la liste
/// </summary>
/// <param name="list">Liste a traiter</param>
private static void ProcessList(SPList list)
{
SPViewCollection views=list.Views;
// Copy dans un tableau pour pouvoir enumérer sans avoir d'erreur sur le Update d'une vue
SPView[] viewArray = new SPView[views.Count];
for (int i = 0; i < views.Count; i++)
viewArray= views
;
// Ballayage du tableau
foreach (SPView view in viewArray)
{
// lecture du nom de la vue
string viewTitle = null;
try { viewTitle = view.Title; }
catch { viewTitle = "<unknown>"; }
if (string.IsNullOrEmpty(viewTitle)) viewTitle = "<unknown>";// traitement de la vue
try
{
ProcessView(viewTitle,view);
}
catch(Exception ex)
{
Error(string.Format("Error processing view \"{0}\" : {1}", viewTitle,ex.Message), false, false, ExitCode.None);
}
}
}/// <summary>
/// Traite une vue
/// </summary>
/// <param name="viewTitle">Titre de la vue</param>
/// <param name="view">Vue</param>
private static void ProcessView(string viewTitle,SPView view)
{
bool isHidden = view.Hidden;
ConsoleKeyInfo key;
do
{
Console.Write(string.Format("view \"{0}\" is {1}. Should (k)eep ou (c)hange (k/c) ? ", viewTitle, isHidden?"hidden":"visible"));
key = Console.ReadKey();
} while (key.KeyChar != 'k' && key.KeyChar != 'c');
Console.WriteLine("");
if (key.KeyChar == 'c')
{
view.Hidden = !isHidden;
view.Update();
}
}/// <summary>
/// Doit-on traiter la liste ?
/// </summary>
/// <param name="listTitle">Liste que l'on doit géré</param>
/// <returns>Vrais si elle est a traiter</returns>
private static bool isProcessList(string listTitle)
{
ConsoleKeyInfo key;
Console.ForegroundColor = ConsoleColor.White;
do
{
Console.Write(string.Format("Should process list \"{0}\" (y/n) ? ", listTitle));
key = Console.ReadKey();
} while (key.KeyChar != 'y' && key.KeyChar != 'n');
Console.WriteLine("");
Console.ForegroundColor = ConsoleColor.Gray;
return key.KeyChar == 'y';
}/// <summary>
/// Connexion au site Sharepoint
/// </summary>
/// <param name="url">url du site</param>
/// <param name="site">Site retourné</param>
/// <param name="web">Web retourné</param>
/// <returns></returns>
private static bool Connect(string url, out SPSite site, out SPWeb web)
{
site = null;
web = null;
try
{
site = new SPSite(url);
web = site.OpenWeb();
}
catch
{
try { if (web != null) web.Dispose(); } catch {}
try { if (site != null) site.Dispose(); } catch { }
return false;
}
return true;
}/// <summary>
/// Affiche une erreur
/// </summary>
/// <param name="msg">Message d'erreur</param>
/// <param name="syntax">Rappel la syntaxe ?</param>
/// <param name="quit">Quitte l'application</param>
/// <param name="exitCode">Code de sortie</param>
private static void Error(string msg, bool syntax, bool quit, ExitCode exitCode)
{
// Message
Console.ForegroundColor = ConsoleColor.Red;
Console.Write(msg);
Console.ForegroundColor = ConsoleColor.Gray;// Rappel de la syntaxe
if (syntax)
Console.WriteLine(
string.Format("{0} SiteUrl\n\tSiteUrl : Site url",
typeof(Program).Assembly.CodeBase)
);// Sortie
if(quit) Environment.Exit((int)exitCode);
}
}
}