2010-11-22 104 views
3

也許某個地方有人有同樣的問題,可以幫助我。我在用戶控件(標記)中使用DateTimeControl,該標記反過來在SharePoint解決方案的一部分的頁面上使用。SharePoint 2010 - DateTimeControl造型問題

在某些環境中,DateTimeControl樣式顯示中斷。但是,使用默認網站和任務列表,相同的控件的樣式工作正常。

檢查受影響環境中頁面的HTML輸出,似乎CSS樣式表沒有鏈接到頁面。我檢查了目錄和文件確實存在。

[編輯 - 更多信息]

的日期選擇器彈出式日曆出現在iframe內,通常引用就像這樣:

_layouts/iframe.aspx?&cal=1&lcid=1033&langid=1033&ww=0111110&fdow=0&fwoy=0&hj=0&swn=False&minjday=109207&maxjday=2666269&date=11%2F22%2F2010 

實際文件的標記看起來像這樣:


<%@ Assembly Name="Microsoft.SharePoint.ApplicationPages" %> <%@ Page Language="C#" Inherits="Microsoft.SharePoint.ApplicationPages.DatePickerFrame"  %> <%@ Import Namespace="Microsoft.SharePoint.ApplicationPages" %> <%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Import Namespace="Microsoft.SharePoint" %> <%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <% SPSite spServer = SPControl.GetContextSite(Context); SPWeb spWeb = SPControl.GetContextWeb(Context); %> 
<html dir="<SharePoint:EncodedLiteral runat='server' text='<%$Resources:wss,multipages_direction_dir_value%>' EncodeMethod='HtmlEncode'/>"> 
    <head> 
    <meta name="GENERATOR" content="Microsoft SharePoint" /> 
    <SharePoint:CssLink runat="server"/> 
    <script type="text/javascript" src="./DatePicker.js"></script> 
    <title>Date Picker</title> 
    </head> 
    <body onload="PositionFrame('DatePickerDiv');" onkeydown="OnKeyDown(event);" style="margin:0;"> 
     <SharePoint:SPDatePickerControl id="DatePickerWebCustomControl" runat="server" > 
      </SharePoint:SPDatePickerControl> 
    </body> 
</html> 

正確的輸出將包括類似於此的頭部部分:


<head> 
<meta name="GENERATOR" content="Microsoft SharePoint" /> 
<link rel="stylesheet" type="text/css" href="/_layouts/1033/styles/Themable/datepickerv4.css?rev=Hu9OlQmu1YOXv7TK%2BQrc5Q%3D%3D"/> 
<link rel="stylesheet" type="text/css" href="/_layouts/1033/styles/Themable/corev4.css?rev=iIikGkMuXBs8CWzKDAyjsQ%3D%3D"/> 

<script type="text/javascript" src="./DatePicker.js"></script> 
<title>Date Picker</title> 
</head> 

注意到datepickerv4.css樣式表的鏈接?然而,它發生在某些環境中,在HTML輸出的頭部,看上去像這樣:


<head> 
<meta name="GENERATOR" content="Microsoft SharePoint" /> 
<link rel="stylesheet" type="text/css" href="/_layouts/1033/styles/Themable/corev4.css?rev=iIikGkMuXBs8CWzKDAyjsQ%3D%3D"/> 

<script type="text/javascript" src="./DatePicker.js"></script> 
<title>Date Picker</title> 
</head> 

通知缺少的環節?我曾嘗試修復SharePoint的安裝,但唉。我沒有成功使用DateTimeControl.ApplyStyleSheetSkin方法。

它必須是我需要做的事情,因爲任務列表上的DateTimeControl在受影響的環境中表現正確。

任何想法

+0

您的用戶控件生成的HTML部分對於正在工作的頁面和不是的頁面是否相同?如果是這樣,那麼問題就是確保CSS同時也被引用。 – 2010-11-22 18:16:53

回答

9

的問題是與管理路徑,這裏如下場景:

管理路徑(「管理」)已建立。在管理的路徑上,創建了一個團隊網站。 '管理'名爲'blanksite'並在另一個名爲'portal'的網站中創建了一個空白網站。

用於iframe日曆頁面的路徑應該是http://host:port/manage/blanksite/portal/_layouts/iframe.aspx,而是隻讀爲http://host:port/_layouts/iframe.aspx

儘管可訪問,但上下文不正確,這意味着DatePicker的CSS從未附加。

爲了解決這個問題,我們將用戶控件中的DateTimeControl元素的DatePickerFrameUrl屬性設置爲'SPContext.Current.Web.ServerRelativeUrl +「/_layouts/iframe.aspx」'。

+0

謝謝爲我工作! – jpussacq 2015-08-27 17:44:15

-1

你是如何引用CSS樣式表?它是通過主頁面還是用戶控件中的直接引用?如果是後者,它可能不是指向正確的位置。您是否嘗試過用於Firefox和Firebug的Web Developer插件來驗證樣式表是否正確拾取?

+1

我使用的是regual v4母版頁,我沒有引用任何樣式表。就像在某些環境中,datepicker的樣式表沒有附加到HTML輸出。 – Raybiez 2010-11-22 09:22:11

+0

請不要以完整答案的形式發佈後續問題。當您獲得足夠的聲望時,您可以在問題本身下發表後續問題作爲評論。 – 2015-04-04 03:58:12

3

將用戶控件中的DateTimeControl元素的DatePickerFrameUrl屬性設置爲SPContext.Current.Web.ServerRelativeUrl + "/_layouts/iframe.aspx"修復了我的問題。