2016-07-01 6 views
0

Lotus Notes上に構築されたWebフォームがあります。このフォームでは、保存するボタンをクリックします。クリックするとフォームが保存され、フォームは閉じられません。ユーザーがフォームを閉じることなく編集して保存できるようにする必要があります。これはどうすればできますか?Lotus Notes Webフォームでの編集と保存

+0

コードを表示してください。現在のボタン「保存して閉じる」はどのように見えますか? –

+0

我々は検証をチェックするcheck()関数を持っています。それからdocument.forms [0] .submit();文書を提出してから文書を閉じます。文書を保存した後に文書を閉じることはできません。 – Harshi

+0

これは、通常、文書を正常に送信し、WebQuerySaveエージェントに編集のために文書を再オープンするリダイレクトURL(角カッコで囲んだもの)を印刷させることによって行われます。もちろん、これは実際にはフォームを閉じて再オープンするため、フォーカスを復元するスクリプトとURL引数を追加しない限り、ユーザーはその位置を失います。 –

答えて

0

Javascriptを使用して保存関数を書くことができます(またはjQueryを使いやすくすることもできます)。 シンプルなLotusScriptエージェントを呼び出して、フォームの値をドキュメントに保存できます。

私は8月にオースティンのMWLUGでこれについてのプレゼンテーションを行いますが、あなたはここで私の前のプレゼンテーションのサンプルコードを見つけることができます。

http://blog.texasswede.com/mwlug-2015/は - また、アヤックス、JSON、jQueryとブートストラップ

の基本を含み

http://blog.texasswede.com/my-connect-2016-presentation-demo-database/ - IBM Connect 2016からの私のプレゼンテーションは、JSONPを使用して他のサーバー上のエージェントを呼び出す方法を示す、基本的に短くて焦点が絞られています。ここで

は、あなたがそれを行うことができる方法である。

1)すべての入力を与えるには、Dominoデータベース内のフィールドの名前に設定し、ノート・フィールドと呼ばれるカスタムattributをフィールド。それは次のようになります。

<input type="text" id="firstName" notes-field="FirstName"> 

また必ず注意事項は、あなたがHTML要素に編集している文書のUNID(一意のID)をdoucument保存します。私はこのように、docUNIDのIDを持つDIV内のデータ属性として保存:

<div id="docUNID" data-UNID="CD8808D24664739A86257FB7005B38CE"> 

2)あなたの保存ボタンに次のjQueryコードをバインドします

// Get Document UNID for the document you want to update 
var docunid = $("#docUNID").attr("data-UNID"); 
var json = new Object(); 
// Store field values in JSON object 
json["DocUNID"] = docunid; 
$('input[notes-field]').each(function() { 
    var notesfield = $(this).attr("notes-field"); 
    json[notesfield] = $(this).val(); 
}); 
// Perform Ajax call to the server to save values    
$.ajax({ 
    url: "http://www.example.com/path/database.nsf/ajax_SaveContact.jsonp?OpenAgent", 
    dataType: "jsonp", 
    data: json 
}); 

3)コールバックを作成します。 SaveDataエージェントによって返されたデータを処理する関数です。この関数名は、次の手順で作成するエージェント内の関数名と一致する必要があります。

// Call-back function for save contact call 
function callbackSaveContact(data) { 
    if (data.ajaxstatus=="error") { 
     alert("Failure: " + data.msg); 
    } else if (data.ajaxstatus=="success") { 
     alert("Success: " + data.msg); 
    } 
} 

4)指定された文書に渡されたデータを保存するために、あなたのエージェントを作成します:あなたは、各カスタムクラスを含む、2つのスクリプト・ライブラリを使用する必要が

%REM 
    Agent ajax_SaveContact.jsonp 
    Created Dec 24, 2015 by Karl-Henry Martinsson 
    Description: Save contact details, return status 
    and informational message as JSONP 
%END REM 
Option Public 
Option Declare 

Use "Class.JSON" 
Use "Class.URL" 

Sub Initialize 
    '--- Local Notes classes used in agent 
    Dim session As New NotesSession 
    Dim db As NotesDatabase 
    Dim doc As NotesDocument 
    '--- Custom classes 
    Dim json As JSONData 
    Dim url As New URLData 

    '*** Get document 
    Set db = session.CurrentDatabase 
    If url.GetValue("DocUNID")<>"" Then 
     Set doc = db.GetDocumentByUNID(url.GetValue("DocUNID")) 
    End If 
    '*** Check that we found a document, otherwise create a new person document 
    If doc Is Nothing Then 
     Set doc = New NotesDocument(db) 
     doc.Form = "Person" 
     Call doc.Save(True,False) 
     Call doc.ReplaceItemValue("DocUNID", doc.UniversalID) 
    End If 
    ForAll v In url.values() 
     Call doc.ReplaceItemValue(ListTag(v),v) 
    End ForAll 
    Call doc.Save(True,False) 
    Set json = New JSONData() 
    json.success = True 
    json.SetMsg("Saved " + url.GetValue("FirstName") + " " + url.GetValue("LastName")) 
    Call json.SetValue("DocUNID", doc.UniversalID) 
    Call json.SendJSONPToBrowser("callbackSaveContact") 
End Sub 

注意を。最初の1つのClass.URLは、エージェントに入るHTTP POST/GETで渡されたデータを読み取るために使用されます。 2番目のClass.JSONは、JSON/JSONPを作成して戻すのに役立ちます。 あなたは私のプレゼンテーションのためのサンプルデータベース内だけでなく、私のブログ上でそれらを見つけることができます。

http://blog.texasswede.com/free-code-class-to-read-url-name-value-pairs/ http://blog.texasswede.com/calling-a-notes-web-agent-from-another-server-using-jsonp/

プレゼンテーションSlideShare.netにも、次のとおりです。

http://www.slideshare.net/TexasSwede/ibm-connect-2016-break-out-of-the-box

http://www.slideshare.net/TexasSwede/ad102-break-out-of-the-box

関連する問題