SharePoint 2010 - DateTimeControl样式问题

时间:2010-11-22 07:56:26

标签: sharepoint-2010 datepicker stylesheet

也许有人在某个地方有同样的问题,可以帮助我。我在用户控件(标记)中使用DateTimeControl,而后者又用在SharePoint解决方案的一个页面上。

在某些环境中,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部分看起来像这样:


<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在受影响的环境中表现正常。

任何想法

3 个答案:

答案 0 :(得分:9)

问题在于托管路径,以下是场景:

创建了管理路径('manage')。在托管路径上,创建了一个团队网站。在名为'blanksite'的'manage'上创建了一个空白站点,在另一个名为'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“'。

答案 1 :(得分:3)

将用户控件中DatePickerFrameUrl元素的DateTimeControl属性设置为SPContext.Current.Web.ServerRelativeUrl + "/_layouts/iframe.aspx"解决了我的问题。

答案 2 :(得分:-1)

您是如何引用CSS样式表的?是通过主页还是用户控件中的直接引用?如果是后者,它可能不是指向正确的位置。您是否尝试过Firefox的Web Developer插件和Firebug,以验证样式表是否正确选取?