Опрос Sharepoint: динамически обновляемый поиск
В настоящее время я работаю над созданием опроса Sharepoint.
Первый вопрос - это поиск в списке, который выглядит так:
Course1
Course2
Course3
Course4
Теперь пользователь должен выбрать один из этих ответов. Пока у меня работает поиск, у меня проблема с обновлением списка.
идея состоит в том, что пользователь может добавить свои собственные курсы, чтобы дополнить список.
Так, например, он может выбрать ДРУГОЙ и ввести Course5 в текстовое поле, которое затем должно быть добавлено в список. Затем следующий пользователь сможет выбрать Course5 из выпадающего списка.
У меня проблемы с записью результатов опроса в список. Возможно ли это?
С уважением.
1 ответ
В поле выбора он предоставляет функцию "заполнения", к сожалению, столбец поиска не может предоставить эту функцию.
В качестве обходного пути мы можем с помощью jQuery добавить текстовое поле и кнопку в столбце поиска ниже на странице newform.aspx. Добавьте текст в текстовое поле и нажмите кнопку "Добавить", затем добавьте данные в список поиска. Следующий пример для вашей справки:
<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
var questionTitle="question1";
var lookupListName="CL30";
$(function(){
$("select[title='"+questionTitle+"']").closest("td").append("<input id='lookupitemTitle' type='text'/> <input id='addlookupitembtn' type='button' value='Add'>");
$("#addlookupitembtn").click(function(){
if($("#lookupitemTitle").val().trim()!=""){
AddListItem(lookupListName);
}
});
});
function AddListItem(listName){
var itemType = GetItemTypeForListName(listName);
var item = {
"__metadata": { "type": itemType },
"Title": $("#lookupitemTitle").val()
};
$.ajax({
url: _spPageContextInfo.siteAbsoluteUrl + "/_api/web/lists/getbytitle('" + listName + "')/items",
type: "POST",
contentType: "application/json;odata=verbose",
data: JSON.stringify(item),
headers: {
"Accept": "application/json;odata=verbose",
"X-RequestDigest": $("#__REQUESTDIGEST").val()
},
success: function (data) {
var item=data.d;
$("select[title='"+questionTitle+"']").append("<option selected='selected' value='"+item.ID+"'>"+item.Title+"</option>");
},
error: function (data) {
alert("Error");
}
});
}
function GetItemTypeForListName(name) {
return "SP.Data." + name.charAt(0).toUpperCase() + name.split(" ").join("").slice(1) + "ListItem";
}
</script>