2010-11-22 3 views
3

Возможно, у кого-то была такая же проблема и она может мне помочь. Я использую DateTimeControl в пользовательском элементе управления (разметке), который, в свою очередь, используется на странице, которая является частью решения SharePoint.SharePoint 2010 - Проблемы с установкой DateTimeControl

В некоторых условиях стиль DateTimeControl выглядит сломанным. Однако, используя сайт по умолчанию и список задач, стилизация одного и того же элемента управления отлично работает.

Проверка вывода HTML-страницы на зараженной среде, похоже, что таблица стилей CSS не связана со страницей. Я проверил каталоги и файлы существуют.

[Edit - Подробнее]

Дата выбора всплывающего календаря появляется внутри фрейма, обычно ссылаются как так:

_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 без успеха.

Это должно быть что-то, что мне нужно сделать, потому что списки задач в TimeTimeControl ведут себя корректно в затронутых средах.

Любые идеи

+0

Является ли итоговый раздел HTML вашего пользователя одинаковым для страниц, которые работают, и страниц, которые нет? Если это так, то проблема заключается в том, чтобы убедиться, что CSS также ссылается на обоих. –

ответ

9

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

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

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

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

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

+0

Спасибо за работу! – jpussacq

-1

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

+1

Я использую обычную страницу V4 Master, и я не ссылаюсь ни на какие таблицы стилей. Похоже, что в некоторых средах таблица стилей для datepicker не привязана к выходу HTML. – Raybiez

+0

Пожалуйста, не отправляйте ответы на следующие вопросы в качестве полных ответов. Когда вы получаете достаточную репутацию, вы можете оставлять ответы на вопросы в виде комментариев по самому вопросу. –

3

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

Смежные вопросы