2010-11-22 101 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"修复了我的问题。