none
Infopath XmlFormView在应用程序页保存问题; xfv.XmlForm.save() 方法未实现? RRS feed

  • 问题

  • 问题:http://pastebin.com/2RFdMYLG

    当我调用 XmlFormView.XmlForm.Save 或者 SaveAs 方法, 抛出异常:NotImplementedException ;

    在页面上使用InfoPath:XmlFormView 控件, 还有什么好的方式保存, 目前使用Js保存不稳定,有时能保存,有时未保存,infopath保存后,我还需到

    后台更新一些操作,如果使用 setTimeout 延迟一下, 则保存成功几率比较大. 是什么原因呢? 谢谢.:

    JS保存:

    function save_infopath() {
                Toolbar.ExecuteAction('XmlFormView1', 'save', event);
                Dialog_Save(infopath_name, false, true);
            }

    后台保存:

    1. InfoPath library throws NotImplementedException for XmlFormView.XmlForm.SaveAs method
    2. <InfoPath:XmlFormView ID="infoPathFormView" ShowHeader="false" Style="width: 100%;" runat="server" />
    3.        
    4. infoPathFormView.SaveLocation = "http://localhost/MyFormLibrary";
    5. infoPathFormView.DataBind();
    6.  
    7. if(infoPathFormView.XmlForm.New)
    8. {
    9.    string fileName = Page.User.Identity.Name;
    10.    infoPathFormView.XmlForm.SaveAs(fileName); // This line throws.
    11. }
    12. else
    13. {
    14.    infoPathFormView.XmlForm.Save();
    15. }

    谢谢.


    Anything is Possible!

    2012年8月21日 3:22

答案

  • Hi harvey,

    你有没有在前台调试过你的代码呢? 当不能保存的时候,是否会有超时等异常啊。所以,你还是要找到不能保存的异常啊。 我建议你将将你的脚本暂时从core.js里面拿出来,放到自己的js文件里面,再重新调试一下,捕获到你保存不成功的时候的异常.

    Thanks,

    Jack

    2012年8月28日 1:14
    版主

全部回复

  • Hi Harvey,

    一般报异常 是由于

    没有使用“表单选项”对话框的“安全和信任”类别将表单模板配置为“完全信任”。

    你可以参考如下链接

    http://msdn.microsoft.com/zh-cn/library/microsoft.office.infopath.xmlform.save(v=office.11).aspx

    http://social.msdn.microsoft.com/Forums/en/sharepointdevelopment/thread/b640296f-aa3d-4b9f-bca2-4c5c2ff7df62

    Thanks,

    Jack

    2012年8月21日 7:28
    版主
  • 嘿, Jack ; 你好!

    首先感谢你的答复.

    目前我使用的JS前端保存方法;  Toolbar.ExecuteAction('XmlFormView1', 'save', event);

    该JS在 \LAYOUTS\INC\Core.js 中:

    Toolbar.ExecuteAction = Toolbar_ExecuteAction;
    function Toolbar_ExecuteAction(b, a, c) {
        ULSrLq: ;
        return Toolbar_ExecuteActionEx(b, a, c, false)
    }
    function Toolbar_ExecuteActionEx(a, e, f, b) {
        ULSrLq: ;
        if (!b && !Toolbar_CanHandleEvents(a)) return false;
        var c = GlobalFormData.Get(a),
        d = c.objFocusedToolbarControl;
        Dialog.objClientSideData = d;
        switch (e) {
        case "refresh":
            document.forms[0] != null && View_SubmitForm(a, false, 24, 0, false);
            break;
        case "submit":
        case "submitListItem":
            View.PreSubmitActions(a) && EventLog_Add(a, 9, null, "", "", "", true, b, false, 9, 0);
            break;
        case "save":
            View.PreSaveActions(a) && EventLog_Add(a, 14, null, "", false, false, true, b, false, 10, 0);
            break;
        case "saveAs":
            View.PreSaveActions(a) && EventLog_Add(a, 14, null, "", true, false, true, b, false, 11, 0);
            break;
        case "close":
        case "closeListItem":
        case "listDisplayCloseItem":
            Toolbar_Close(a);
            break;
        case "print":
            Print.Show(a);
            break;
        case "alertMe":
            Toolbar_HandleAlertMe(a);
            break;
        case "deleteItem":
        case "listDisplayDeleteItem":
            Toolbar_HandleDeleteItem(a);
            break;
        case "editItem":
            Toolbar_HandleEditItem(a);
            break;
        case "newItem":
            Toolbar_HandleNewItem(a)
        }
        Util.StopEventProprogation(f);
        return false
    }

    但是使用该方法保存, 为什么总是有时候能保存表单,有时候不能保存表单?

    谢谢


    Anything is Possible!

    2012年8月27日 3:46
  • Hi harvey,

    你有没有在前台调试过你的代码呢? 当不能保存的时候,是否会有超时等异常啊。所以,你还是要找到不能保存的异常啊。 我建议你将将你的脚本暂时从core.js里面拿出来,放到自己的js文件里面,再重新调试一下,捕获到你保存不成功的时候的异常.

    Thanks,

    Jack

    2012年8月28日 1:14
    版主