SharePoint 2010 - проблемы со стилями DateTimeControl - PullRequest
3 голосов
/ 22 ноября 2010

Может быть, кто-то где-то имел такую ​​же проблему и может мне помочь. Я использую 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>
<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 ]

9 голосов
/ 24 ноября 2010

Проблема была с управляемыми путями, здесь следует сценарий:

Создан управляемый путь («управление»).На управляемом пути был создан сайт группы.Пустой сайт был создан в «manage» с именем «blanksite», а внутри него другой сайт с именем «portal».

Путь, используемый для страницы календаря iframe, должен был быть http://host:port/manage/blanksite/portal/_layouts/iframe.aspx, но вместо этого только чтениеas http://host:port/_layouts/iframe.aspx.

Несмотря на доступность, контекст был некорректным, что означало, что CSS DatePicker никогда не был присоединен.

Чтобы устранить проблему, мы установили свойство DatePickerFrameUrl элементов DateTimeControl внутрипользовательский элемент управления для 'SPContext.Current.Web.ServerRelativeUrl + "/_layouts/iframe.aspx"'.

3 голосов
/ 11 сентября 2011

Установка свойства DatePickerFrameUrl элемента DateTimeControl внутри пользовательского элемента управления на SPContext.Current.Web.ServerRelativeUrl + "/_layouts/iframe.aspx" исправила мою проблему.

0 голосов
/ 22 ноября 2010

Как вы ссылаетесь на таблицу стилей CSS? Это через главную страницу или прямую ссылку в вашем пользовательском контроле? Если последнее, возможно, оно не совсем указывает на правильное местоположение. Пробовали ли вы плагин Web Developer для Firefox и Firebug, чтобы убедиться, что таблица стилей подбирается правильно?

...