Как изменить ширину стандартной диалоговой формы sharepoint 2010
Пожалуйста, помогите мне!
Мне нужно изменить ширину стандартной диалоговой формы для добавления элемента в библиотеку.
Если я нажму кнопку ленты для добавления элемента, форма откроется с шириной =402 пикселей:
<div class="ms-dlgContent" role="dialog" aria-labelledby="dialogTitleSpan" tabindex="-1" style="z-index: 1505; display: block; width: 402px; height: 294px; left: 430px; top: 104px; "></div>
Если я нажму кнопку под всеми элементами текущей библиотеки, форма откроется с шириной =1032 пикселей:
<div class="ms-dlgContent" role="dialog" aria-labelledby="dialogTitleSpan" tabindex="-1" style="z-index: 1505; display: block; width: 1032px; height: 267px; left: 115px; top: 273px; "></div>
Я не могу понять, что мне нужно сделать для открытия во втором случае формы с шириной =402px.
Может быть, нужно ввести какой-то код в Upload.aspx? (эта форма генерируется автоматически) Я думаю, эта страница открыта для создания нового элемента, потому что schema.xml для моего определения списка содержит этот код:
<Forms>
<Form Type="DisplayForm" SetupPath="pages\form.aspx" Url="Forms/DispForm.aspx" WebPartZoneID="Main" />
<Form Type="EditForm" SetupPath="pages\form.aspx" Url="Forms/EditForm.aspx" WebPartZoneID="Main" />
<Form Type="NewForm" Url="Forms/Upload.aspx" WebPartZoneID="Main" />
</Forms>
Но если изменить эту часть Upload.aspx (добавить класс.ms-dglContent), это мне не поможет:
<asp:Content ContentPlaceHolderId="PlaceHolderBodyAreaClass" runat="server">
<style type="text/css">
.ms-bodyareaframe {
padding: 8px;
border: none;
}
.ms-dglContent {
width:402px!important;
}
</style>
</asp:Content>
Если я изменю CSS-файлы:
.ms-dglContent {width:402px!important;}
он изменяет все диалоговые формы, но в моем случае это неприемлемо.
Буду благодарен за любую попытку помочь!
2 ответа
Модальный диалог div динамически помещается в DOM. Если вы хотите изменить размеры диалога, попробуйте найти вызов типа SP.UI.ModalDialog...
var dialogCallbackToMainSite = function (dialogResult, returnValue) {
if(returnValue == 'someValue') {
}
};
var option = {
url:record.data.url,
title:'Task',
allowMaximize:false,
showClose:false,
autoSize:false,
width: 800,
height: 600,
dialogReturnValueCallback:dialogCallbackToMainSite
};
SP.UI.ModalDialog.showModalDialog(option);
Кстати, если вам нужно расположить вертикальный диалог по центру в ситуации, когда прокрутка ленты со страницей и ее статическое положение отключены, следуйте этому решению http://generation12.wordpress.com/2011/10/25/floating-the-sp-ui-modaldialog/
Я не привык работать в Sharepoint, но мне кажется, что функция, которая запускает отображаемый диалог, как-то предоставляет разные значения для переменных измерения, так что, да, вам, вероятно, нужно где-то изменить свой код. Попробуйте поискать по всему вашему решению "1032" - возможно, это измерение ширины где-то присвоено переменной.
Если вы хотите, чтобы оба диалоговых окна выглядели одинаково и не могли найти, где им даны их измерения (хотя я настоятельно рекомендую вам сначала попробовать это), вы, возможно, можете переопределить встроенный стиль с помощью!:
.ms-dglContent {width:402px!important;}