basquang™ on clouds

August 12, 2009

InfoPath Auto Submit to Local Folder using JScript

Filed under: InfoPath — basquang @ 10:53 AM

Khi sử dụng InfoPath, đôi khi chúng ta có nhu cầu tự động submit với filename là một field nào đó trên InfoPath form, hoặc là được đặt sẵn. Để thực hiện được điều này chúng ta có thể sử dụng C# code hoặc JScript. Bài viết này hướng dẫn các bạn thực hiện điều đó. Bài viết đề cập đến các kỹ thuật sau:

– Tự động submit infopath form sử dụng JScript code.

– Tự động save filename sử dụng một text field trên form

– Kiểm tra folder đã tồn tại hay chưa trước khi submit

– Sau khi submit mở luôn một form mới để nhập

1. Trước hết chúng ta kiểm tra Programming Language default của InfoPath form khi thiết kế sử dụng InfoPath thiết lập cho JScript

image

2. Chúng ta thiết kế một form đơn giản bao gồm một textbox và một button

image

3. Click chuột vào Submit button và chọn Action là Submit. Sau đó click on Submit Option… button.

4. Trong Submit Options dialog box, chọn “Allow users to submit this form” –> Chọn “Perform custom action using Code”. Trong “After submit” option, chọn “Create a new, blank form”. Sau đó click on “Edit Code…” button.

image

5. Chúng ta sử dụng JScript Code như sau để submit

   1: function XDocument::OnSubmitRequest(eventObj)
   2: {    
   3:     //Get the filename
   4:     var strFileName = XDocument.DOM.selectSingleNode("/my:myFields/my:field1").text + ".xml"; 
   5:     var xmlDoc = XDocument.DOM.xml;  
   6:     //create FSO Object
   7:     var objFSO = new ActiveXObject("Scripting.FileSystemObject");  
   8:     //Check the folder exist
   9:     if(!objFSO.FolderExists("C:\\InfoPath"))
  10:   {
  11:   //Create folder
  12:    objFSO.CreateFolder("C:\\InfoPath");
  13:   }            
  14:     //Create file
  15:     var tempFile = objFSO.CreateTextFile("C:\\InfoPath\\" + strFileName , true);  
  16:     //Save
  17:     tempFile.Write(xmlDoc);     
  18:     eventObj.ReturnStatus = true;
  19: }

6. Đảm bảo form được full trust

image 

7. Giờ các bạn sẵn sàng test form.

Note: Nếu chúng ta muốn lưu data sau khi submit vào thư mực hiện thời của .xsn file, chúng ta sử dụng câu lệnh:

var folder = fso.GetFolder(".");

để get current folder của .xsn file.

var folderPath = fso.GetFolder(".").path;

để lấy đường dẫn của thư mục hiện thời.

Advertisements

Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Blog at WordPress.com.

%d bloggers like this: