2009-04-29 8 views
5

カスタムの新しいフォームを使用してSharepoint内のリストを保持しています。カスタムリストフォームコントロール(リストの新しいアイテムフォーム)を追加し、SaveButtonを標準の入力HTMLボタンに変更しました。これは、のように動作しますSharepoint List新しいIDでリダイレクトする

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

がデータを保存し、NewFormWizard2.aspx ID =ページにリダイレクトします?と以下のようである「のonclick」イベントを追加しました。

作成したアイテムのIDをリダイレクトされたページに渡すにはどうすればよいですか?フォームが完了すると

したがって、23

答えて

0

は、純粋なJavaScriptの(jQueryの)とhttp://darrenjohnstone.net/からSPAPIコードを使用してのアプローチを発見した。

リストは、私はクレアをthewnてきた二つのフィールド、タイトルとBodyCopy

が含まれていますタイトルと質問、両方のテキストフィールドを要求するフォームを送信すると、送信ボタンは次の関数を呼び出します(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; 
    } 
} 
0

私はIDがあなたからJavascriptをホストするページ上に存在する場所を確認していない= NewFormWizard2.aspx?IDにリダイレクトします。クエリーストリングやページのフィールドに表示されますか?

リクエストまたはレスポンスにアイテムを識別するものは何もありません。私はいくつかのWeb負荷テストを行うときにこの問題を抱えていました。

私は、webservicesを使用してアイテムを作成すると、返品XMLが得られることを示唆しています。

+0

これは、ページ上にIDを持たない新しいリスト項目です。 ポストバック時にIDが作成されるため、リダイレクトのURLは、アイテムがコミットされた後に新しいアイテムのIDで「記入」する必要があります。私はここに多くを求めていますか? よろしく – TheRealQuagmire

0

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

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

のonclick = "javascriptの:{ddwrt:GenFireServerEvent(CONCAT( '?__コミット; __リダイレクト= {NewFormWizard2.aspx ID ='/dsQueryResponse /列/行/ @のID))}"

連結構文プロセッサにシングルクォートで囲まれた値を結合するように指示するXSLT命令です。私はここで見つけた情報からこの答えを取り入れました。カスタムリストフォームで

ロード値 http://wssdevelopment.blogspot.com/2007_04_01_archive.html

0

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

2

jtherkelが近くにあったこの使用してJavaScriptを達成することができますが、欠けていたリダイレクトURLの最後に '}'。私は以下の余分なコンカットを使用しました

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