質問

Sharepoint内にリストがあり、カスタムの新しいフォームを使用してカスタムリストフォームコントロール(リストの「新しいアイテムフォーム」)を追加し、SaveButtonを標準入力HTMLボタンに変更し、「onclick '次のようなイベント:

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

これは、データを保存し、NewFormWizard2.aspx?id =ページにリダイレクトするように機能します。

リダイレクトされたページに渡される作成済みアイテムのIDを取得するにはどうすればよいですか

したがって、フォームが完成すると、NewFormWizard2.aspx?id = 23にリダイレクトされます

役に立ちましたか?

解決 5

純粋なjavascript(JQuery)と http://darrenjohnstone.net/ のSPAPIコードを使用したアプローチを発見しました。

リストには、titleとBodyCopyの2つのフィールドが含まれています

タイトルと質問(両方のテキストフィールド)を要求するフォームを作成し、送信ボタンは次の関数を呼び出します(ServerAddressとLIST_questionを自分の詳細に更新する必要があることに注意してください)。

この関数は、LISTS.ASMX内のSOAPサービスを使用して詳細をアップロードし、応答を使用して新しいアイテムのIDを取得し、ページをリダイレクトします。

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をホストするページのどこにIDが存在するかわかりません。クエリ文字列またはページのフィールドに表示されますか?

リクエストまたはレスポンスには、アイテムを識別するものは何もありません。 Webの負荷テストを行うときにこの問題が発生しました。

提案することができるのは、Webサービスを使用してアイテムを作成することです。これは、XMLを返すためです。

この回答では、「新しいフォーム」は解決されません。問題がありますが、既存のリストアイテムを含む画面の構文では他の人に役立つ可能性があります。

SharePoint(MOSS 2007)環境でこれをすばやくテストしました。

onclick =&quot; javascript:{ddwrt:GenFireServerEvent(concat( '__ commit; __ redirect = {NewFormWizard2.aspx?id ='、/ dsQueryResponse / Rows / Row / @ ID))}&quot;

concat構文は、単一引用符で囲まれた値を結合するようにプロセッサに指示するXSLT命令です。ここで見つけた情報からこの回答を改編しました。

カスタムリストフォームへの値の読み込み http://wssdevelopment.blogspot.com/2007_04_01_archive.html

これが役に立つことを願っています: 1- SharePoint Designerで新しいページを作成し、たとえば&quot; LastItem.aspx&quot;と呼びます。宛先リスト項目の単一のフォームビューでデータビューを配置します。 2ページングを1つのレコードのみに制限し、IDと降順でソートを設定し、リストをフィルターして[現在のユーザー]によって作成されたアイテムのみを表示します。 3-現在、このページにクエリ文字列を渡す必要はありません。デフォルトの「OK」を置き換えるだけです。リストのNewForm.aspxのボタンと標準HTML入力ボタンを使用して、これをその定義に追加します&quot; onclick =&quot; javascript:{ddwrt:GenFireServerEvent(concat( '__ commit; __ redirect = {LastItem.aspx}&quot ;.リストする新しいアイテムは、作成されたアイテムの編集ビューにリダイレクトされます。 [保存]ボタンをクリックした後、LastItem.aspxの[保存]ボタンについても同じ操作を実行して、他のページにリダイレクトできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top