2010-11-22 10 views
3

多分誰かが同じ問題を抱えていて、私を助けてくれるかもしれません。私は、SharePointソリューションの一部であるページで使用されるユーザーコントロール(マークアップ)でDateTimeControlを使用しています。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スタイルシートへのリンクに注目してください。


<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> 

お知らせミッシングリンク:しかし、HTML出力のヘッド部には、そのように見えることを、いくつかの環境で起こっていますか?私はSharePointのインストールを修復しようとしましたが、残念です。私は成功していないDateTimeControl.ApplyStyleSheetSkinメソッドを使用しています。

タスクリストのDateTimeControlが影響を受ける環境で正しく動作するため、これは必要なものでなければなりません。

任意のアイデア

+0

作業中のページと使用していないページで、結果として表示されるユーザーコントロールのHTMLセクションは同じですか?もしそうなら、問題はただCSSが両方からも参照されていることを確認することです。 –

答えて

9

問題は、ここでは、管理対象パスとしたシナリオを、以下:

管理パスは(「管理」)に作成されました。管理パス上に、チームサイトが作成されました。ブランクサイトは「管理」、「ブランクサイト」という名前で作成され、その中に「ポータル」という名前の別のサイトが作成されました。

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

-1

どのようにCSSスタイルシートを参照していますか?マスターページやユーザーコントロールのダイレクトリファレンスを介してですか?後者の場合は、正しい場所を指していない可能性があります。 FirefoxとFirebugのWeb Developerプラグインを試して、スタイルシートが正しくピックアップされていることを確認しましたか?

+1

私はregual v4マスターページを使用していますが、私はスタイルシートを参照していません。一部の環境では、datepickerのスタイルシートがHTML出力に添付されていないようです。 – Raybiez

+0

完全な回答として、一連の質問を投稿しないでください。十分な評判を得ると、質問自体の下にコメントとしてフォローアップの質問を投稿できます。 –

3

ユーザーコントロール内のDateTimeControl要素のDatePickerFrameUrlプロパティをSPContext.Current.Web.ServerRelativeUrl + "/_layouts/iframe.aspx"に設定すると、問題が解決しました。