Опрос 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>

Другие вопросы по тегам