0

Я работал над Sharepoint Online/365 и застрял, пытаясь установить значение из поиска или выбора столбца в NewForm.aspx

суженных мою проблему вниз не в состоянии установить подстановки/Choice столбцы

Я упрощенные коды на моей странице вниз

//Phase being a Choice Column & Closure a case sensitive valid option 
$("select[title='Phase']").val("Closure"); 
//ProjectName being a Lookup Column & Test2 a case sensitive valid entry in the list 
$("select[title='ProjectName']").val("Test2"); 

I не имеют проблем с установкой текстовых полей, поскольку следующий код отлично работает в текстовом поле, которое я создал

$("input[title='TextField']").val("Test2"); 

Я использовал следующие библиотеки Jquery 1.7.2/min.js и 1.11.3

+0

Созданы ли '$ (" select [title = 'Phase'] ")' динамически или при загрузке страницы? –

+0

Я верю, что когда страница загружается, не слишком уверен, скрипт добавляется через веб-часть редактора сценариев для sharepoint или веб-часть редактора содержимого, которая ссылается на файл txt, содержащий скрипт. Я попробовал сценарий с – Paul

+0

. Если они создаются после загрузки DOM (они не являются частью исходного DOM, вы должны обращаться к ним как '$ (document) .find (" select [title = 'Phase '] "). val (« Closure »);' $ (document) позволяет вам взаимодействовать с загруженным DOM. –

ответ

0

Первое спасибо «Верона Чен» и «DIEGO CARRASCAL» из-за того, что я узнал еще несколько трюков в SharePoint, которые помогут в других проектах.

Мой оригинальный сценарий, прежде чем вопрос пытается использовать строку запроса для заполнения поля в NewForm.aspx (который я сделал на 2013 SharePoint с кодом я нашел здесь)

Unforuntaly с Sharepoint Online/365 Этот код больше не работает.

Этот код зафиксировал мою проблему (хотя это изменится, как построены несколько предыдущих страниц)

извинения, если это не прямо ответить на поставленный выше вопрос (как это было мне пытается пробое общий вопрос я было во что-то более простое и легкое в обращении, основанное на том, что я сужу проблему в своем исходном коде), однако, поскольку я сейчас запущен, кажется, что только вежливо вывести результат.

До кода у меня есть список проектов с полем «Имя_проекта». Я отправил имя поля в URL-адрес и запрос для получения mylist/newform.aspx? ProjectName = Test2

Затем я пытался вытащить этот Test2 в поле поиска (понравилось списку проектов) «ProjectName» в list "MyList"

Но даже при загрузке функции для моего старого скрипта с _spBodyOnLoadFunctionNames.push() он не работал.

После игры с этим некоторое время и после некоторых поисков я нашел peice кода

<script type="text/javascript"> 

(function() { 
var ctx = {}; 
ctx.Templates = {}; 
ctx.Templates.Fields = { 
    'ProjectName': { 
     'NewForm': renderTaskCategory 
    } 
}; 
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(ctx); 
})(); 


function renderTaskCategory(ctx) { 
//extract cat parameter from a query string 
var GetProjID = GetUrlKeyValue('ProjID'); 
//set lookup field value 
ctx.CurrentFieldValue = GetProjID; 
//default template for rendering Lookup field control 
return SPFieldLookup_Edit(ctx); 
} 

</script> 

Это означает, что я должен изменить мой предыдущий URL строит для создания MyList/NewForm.aspx? Projíd = 2

Этот скрипт находит идентификатор элемента 2 (что случается быть test2 в данном случае) и помещает название пункта 2 в моем поле поиска Projectname

Еще раз спасибо тем, кто помог ранее. И снова приношу свои извинения, если это прямо не отвечает на вопрос, который я изначально задал.

0

Не уверен, используется ли метод _spBodyOnLoadFunctionNames.push() для логик. Обычно вам нужно подождать, когда будут загружены все объекты SharePoint DOM, а затем выполнить код jQuery. Если вы использовали библиотеку SharePoint JavaScript, вам, вероятно, нужно вызвать ExecuteOrDelayUntilScriptLoaded(), чтобы убедиться, что ваш вызов вызывается после загрузки файлов занавеса SharePoint .js.

+0

Спасибо, я многому научился из вашего комментария, я поднял ответ как полезный, но, к сожалению, из-за моего ранга, который он не показывает. Я думаю, проблема может заключаться в том, как данные SP dispalys отображаются в полях поиска/выбора. Первоначально я хотел передать значение querystring в поле поиска в newform.aspx, но даже при запуске скрипта в _spBodyOnLoadFunctionNames.push() он не работал С тех пор я изменил свой предыдущий дизайн страницы, чтобы вытолкнуть поле идентификатора вместо поля заголовка в качестве строки запроса. Теперь я возвращаю значение заголовка, вызывая его идентификатор через cewp и скрипт ниже – Paul