Перенаправление списка Sharepoint с новым идентификатором

StackOverflow https://stackoverflow.com/questions/801878

  •  03-07-2019
  •  | 
  •  

Вопрос

У меня есть список в Sharepoint, используя пользовательскую новую форму, я добавил пользовательский элемент управления формой списка ("Форма нового элемента" для списка) и изменил кнопку сохранения на стандартную кнопку ввода HTML и добавил событие "onclick", которое выглядит следующим образом:

onclick="javascript: {ddwrt:GenFireServerEvent('__commit;__redirect={NewFormWizard2.aspx?id=}')}"

Это работает так же, как при сохранении данных и перенаправлении на страницу NewFormWizard2.aspx?id=.

Как мне получить идентификатор созданного элемента для передачи на перенаправленную страницу?

Таким образом, как только форма будет заполнена, она будет перенаправлена на NewFormWizard2.aspx?id= 23

Это было полезно?

Решение 5

нашел подход, использующий чистый javascript (jQuery) и код SPAPI из http://darrenjohnstone.net/.

Список содержит два поля: title и BodyCopy

Я создал форму, которая запрашивает заголовок и вопрос, оба текстовых поля, затем кнопка отправки вызывает следующую функцию:(обратите внимание, что ServerAddress и LIST_question необходимо обновить до ваших собственных данных).

Затем функция загружает данные с помощью сервиса SOAP в списки.ASMX и, используя ответ, получает идентификатор нового элемента и перенаправляет страницу.

var LIST_question = '{xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}';
var ServerAddress = 'http://xxx/';

function submitQuestion()
    {
    var title = new String($("#title").val());
    var t = new String($("#question").val());
    t=t.trim();
    if(t=="")
        return;

    title=title.trim();
    if(title=="")
        return;


    var lists = new SPAPI_Lists(ServerAddress) ;
    // 
    var newItem = { Title :  title, BodyCopy : t};
    var items = lists.quickAddListItem(LIST_question, newItem); 
    var id=-1; 
    if (items.status == 200) 
    { 
        var rows = items.responseXML.getElementsByTagName('z:row');
        if(rows.length ==1)
        {
            var r = rows[0];
            var id = r.getAttribute('ows_ID'); 
            window.location.href='DispForm.aspx?ID='+id;

        }
        else
        {
            alert("Error: No row added");
        }


    } 
    else
    { 

        alert('There was an error: ' + items.statusText); 
        return;
    }
}

Другие советы

jtherkel был близок, но не хватало '}' в конце URL-адреса перенаправления.Я использовал дополнительную комбинацию ниже

<input type="button" value="Submit" name="btnSave" onclick="javascript: {ddwrt:GenFireServerEvent(concat('__commit;__redirect={lists/MyListName/DispForm.aspx?ID=',/dsQueryResponse/Rows/Row/@ID,'}'))}" />

Я не уверен, где идентификатор будет существовать на странице, с которой вы размещаете Javascript.Отображается ли он в строке запроса или в поле на странице?

В запросе или ответе нет ничего, что могло бы идентифицировать элемент.У меня возникла эта проблема при выполнении некоторого веб-тестирования загрузки.

Я могу только предположить, что вы создаете элемент с помощью веб-сервисов, поскольку это дает вам некоторый возвращаемый xml.

Этот ответ не решает проблему с "новой формой", но он может помочь другим с синтаксисом для экранов, содержащих существующие элементы списка.

Я быстро протестировал это в своей среде SharePoint (MOSS 2007).

onclick="javascript:{ddwrt:GenFireServerEvent(concat('__commit;__redirect={NewFormWizard2.aspx?id=',/dsQueryResponse/Rows/Row/@ID))}"

Синтаксис concat - это инструкция XSLT, которая сообщает процессору объединить значения, заключенные в одинарные кавычки.Я адаптировал этот ответ из информации, которую нашел здесь.

Загрузка значений в Пользовательскую форму списка http://wssdevelopment.blogspot.com/2007_04_01_archive.html

Я надеюсь, что это было бы полезно:1- В SharePoint Designer создайте новую страницу, назовите ее, например, "LastItem.aspx" и поместите на нее dataview с одним представлением формы для элемента списка назначения.2-Ограничьте подкачку только одной записью, установите сортировку по идентификатору и убыванию и отфильтруйте список, чтобы показывать только элемент, созданный [текущим пользователем].3-Теперь вам не нужно передавать какую-либо строку запроса на эту страницу.просто замените кнопку "OK" по умолчанию в NewForm.aspx списка на стандартную кнопку ввода HTML и добавьте это в ее определение "onclick="javascript:{ddwrt:GenFireServerEvent(concat('__commit;__redirect={LastItem.aspx}".После отправки нового элемента в список вы будете перенаправлены на просмотр созданного элемента для редактирования.Вы можете сделать то же самое для кнопки сохранить в LastItem.aspx, чтобы перенаправить на какую-либо другую страницу после нажатия на кнопку сохранить.

Вы можете добиться этого с помощью JavaScript http://www.sharepointdrive.com/blog/Lists/Posts/Post.aspx?ID=9

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top