Как изменить ширину стандартной диалоговой формы 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;}
Другие вопросы по тегам