2008-11-28 6 views
3

J'ai un problème étrange avec la fonctionnalité sharepoint et ajax. Nous avons un UpdatePanel placé dans webpart. Lorsque la publication partielle a lieu, le titre de la page est manquant.Sharepoint, ajax et le titre de la page

Nous avons trouvé que la solution partielle temporaire consiste à écrire l'élément titre dans une ligne et à ne pas utiliser d'espaces ou de contrôles à l'intérieur de celui-ci ... pas même un contrôle littéral.

Mais nous avons besoin d'un moyen de fournir un titre de sommon pour toutes les pages, si le titre se présente comme suit: Mon titre par défaut - Titre de la page actuelle

Toute idée comment résoudre ce problème?

Répondre

3

Je ne dispose pas d'une référence à la publication du groupe de discussion, mais il s'agit d'un problème connu lié à la publication de pages, comme indiqué par Drax. La solution de contournement que j'ai utilisée dans le passé est de coder en dur le titre sur la page - le titre des métadonnées étant perdu fait partie du bug. Lorsque le codage en dur n'a pas été possible, j'ai utilisé javascript pour changer le titre de la page: document.title = "fixation du titre ici"; Supposément, Microsoft prévoit de résoudre ce problème dans la prochaine version de sharepoint.

+0

+1: solution de contournement sale, mais parfois il doit être fait ... – vitule

+0

merci pour votre réponse .. nous allons propably mettre en œuvre un correctif javascript similaire, car il n'est pas possible de coder les titres de page pour nous – drax

0

Cela ressemble au problème de sharepoint pur. Il semble également que seuls les sites basés sur la mise en page de publication sont affectés. J'ai débogué la réponse dans firebug et pour une raison quelconque, il retourne le paramètre pour le titre de la page, donc la réponse du serveur contient non seulement les informations du panneau de mise à jour, mais aussi le titre de la page vide. J'ai débogué nos webparts et aucun d'entre eux ne joue avec le titre de la page. Je suggère de ne pas utiliser la publication ou simplement n'utiliser aucun contrôle à l'intérieur du titre.

Nous travaillons actuellement sur cette question dans la société pour laquelle je travaille, donc je vais télécharger vos conclusions lorsque nous trouver quelque chose.

+0

Avez-vous déjà compris pourquoi cela n'arrive qu'à la publication de pages? Cela semble très étrange. – xr280xr

5

Je pensais que je partagerais ma solution à ce problème embêtant. Ce que j'ai fini par faire, c'est jeter ce petit script pratique que j'ai mis ensemble ci-dessous. Vous pouvez le mettre dans votre mise en page personnalisée ou sur votre page maître personnalisée. Il fonctionne en câblant un gestionnaire d'événement AJAX pour récupérer le titre avant qu'AJAX ne le modifie, puis le réapplique en utilisant le code de Darpy ci-dessus. Cela permet de toujours afficher le titre de la page.

<script type="text/javascript"> 

// This script is to fix the issue where AJAX causes SharePoint 
// publishing pages to sometimes make the page title something 
// whacky. 
var app = Sys.Application; 
var origTitle = ""; 
app.add_init(SPCustomAppnInit); 


function SPCustomAppnInit(sender) { 
    origTitle = document.title; // grab the original title. 
    var prm = Sys.WebForms.PageRequestManager.getInstance(); 
    if (!prm.get_isInAsyncPostBack()) 
    { 
prm.add_pageLoaded(SPCustomPageLoaded); // wire up loaded handler. 
    } 
} 

function SPCustomPageLoaded(sender, args) { 

document.title = origTitle; // put the original title back on the document. 
} 

<script> 
+0

Merci! Cela a réglé mon problème parfaitement! Je voudrais juste avoir des privilèges mod afin que je puisse fixer votre style :) – phairoh

+0

formatage fixe. – James

0

Ajouter ce qui suit @ le début de mon contrôle utilisateur webpart Correction du problème

<script type="text/javascript"> 

// This script is to fix the issue where AJAX causes SharePoint 
// publishing pages to sometimes make the page title something 
// whacky. 
var app = Sys.Application; 
var origTitle = ""; 
app.add_init(SPCustomAppnInit); 


function SPCustomAppnInit(sender) { 
    origTitle = document.title; // grab the original title. 
    var prm = Sys.WebForms.PageRequestManager.getInstance(); 
    if (!prm.get_isInAsyncPostBack()) 
    { 
prm.add_pageLoaded(SPCustomPageLoaded); // wire up loaded handler. 
    } 
} 

function SPCustomPageLoaded(sender, args) { 

document.title = origTitle; // put the original title back on the document. 
} 

</script> 

merci beaucoup: D

3

Je me rends compte que cela a été déjà répondu, mais je vais jeter dans mon .02 $. Il semble que le problème se manifeste à cause de deux conditions: (1) en utilisant un postback asynchrone AJAX et (2) ayant un élément < titre multi-ligne > dans la < tête > de la page.

Vérifiez votre page maître. S'il a quelque chose dans le sens de ceci:

<title> 
<sharepointwebcontrols:listitemproperty property="Title" ...> 
</title> 

...alors changez-le pour qu'il soit sur une seule ligne, comme ceci:

<title><sharepointwebcontrols:listitemproperty property="Title" ...></title> 

Problème résolu. Pas de javascript requis.

+0

Très utile, merci! –

+0

+1 - Solution remarquablement simple à un problème qui m'a déconcerté. – TZHX

+0

C'est génial. 2,5 ans, mais je viens de rencontrer ce même problème. Merci. –

Questions connexes