none
请教:在ms crm 4.0如何在一个表单里同时提交两个实体的数据,谢谢! RRS feed

  • 问题

  • 假设需求:同时提交一张订单及其订单的物料明细,订单和物料是一对多的关系。
    咨询:
    a、如何在ms crm 的一个表单页面上展现这种一对多关系的实体?
    b、如何同时保存这两个实体的数据?

    注:不使用iframe


    2009年5月10日 10:12

答案

  • 如果使用iframe的话. 我能想到的有三种方法

    第一种:在OnSave的时候取消CRM的Save动作. 然后将父窗体(ms crm 表单)所有的数据传递给子窗体(IFRAME),然后调用子窗体提交按钮,所有数据成功保存后刷新父窗体。

    第二种:在OnSave的时候取消CRM的Save动作. 然后由父窗体获取子窗体的所有数据,再通过javascript调用webservice提交父窗体和子窗体中的所有数据,提交成功后刷新页面。

    第三种:当FormType=2时。在OnSave事件中先提交IFRAME中的数据(这种方法只能在表单Update的时候才能同时提交,因为当FormType=1时,ObjectId=null,所以无法将IFRAME中的数据与当前记录做关联)。

    以上方法供参考,我个人应用比较多的是第一种方法。


    星吧客 | Josh Liang | 梁祝权 | Blog:http://xingbake.cnblogs.com
    2009年5月11日 2:46

全部回复

  • 呵呵. 不使用IFRAME的情况下实现同时保存似乎不太方便. 你可以通过Javascript + WebService. 又或者整个表单都重新开发, 然后在OnLoad 的时候重定向到你开发的页面. 不过总觉得这样做很别扭...
     
    所以我有个疑问. 我不是很明白. 你为什么排斥IFRAME???


    星吧客 | Josh Liang | 梁祝权 | Blog:http://xingbake.cnblogs.com
    2009年5月10日 16:57
  • 呵呵. 不使用IFRAME的情况下实现同时保存似乎不太方便. 你可以通过Javascript + WebService. 又或者整个表单都重新开发, 然后在OnLoad 的时候重定向到你开发的页面. 不过总觉得这样做很别扭...
     
    所以我有个疑问. 我不是很明白. 你为什么排斥IFRAME???


    星吧客 | Josh Liang | 梁祝权 | Blog:http://xingbake.cnblogs.com

    非常感谢,不是排斥IFRAME,是觉得这种需求很普遍,想知道ms crm能否直接实现;
    如果使用IFRAME,不知道大概实现思路是什么,请赐教,新人,谢谢!~
    2009年5月11日 1:10
  • 如果使用iframe的话. 我能想到的有三种方法

    第一种:在OnSave的时候取消CRM的Save动作. 然后将父窗体(ms crm 表单)所有的数据传递给子窗体(IFRAME),然后调用子窗体提交按钮,所有数据成功保存后刷新父窗体。

    第二种:在OnSave的时候取消CRM的Save动作. 然后由父窗体获取子窗体的所有数据,再通过javascript调用webservice提交父窗体和子窗体中的所有数据,提交成功后刷新页面。

    第三种:当FormType=2时。在OnSave事件中先提交IFRAME中的数据(这种方法只能在表单Update的时候才能同时提交,因为当FormType=1时,ObjectId=null,所以无法将IFRAME中的数据与当前记录做关联)。

    以上方法供参考,我个人应用比较多的是第一种方法。


    星吧客 | Josh Liang | 梁祝权 | Blog:http://xingbake.cnblogs.com
    2009年5月11日 2:46
  • 谢谢josh!

    2009年5月12日 9:08
  • 如果使用iframe的话. 我能想到的有三种方法

    第一种:在OnSave的时候取消CRM的Save动作. 然后将父窗体(ms crm 表单)所有的数据传递给子窗体(IFRAME),然后调用子窗体提交按钮,所有数据成功保存后刷新父窗体。

    第二种:在OnSave的时候取消CRM的Save动作. 然后由父窗体获取子窗体的所有数据,再通过javascript调用webservice提交父窗体和子窗体中的所有数据,提交成功后刷新页面。

    第三种:当FormType=2时。在OnSave事件中先提交IFRAME中的数据(这种方法只能在表单Update的时候才能同时提交,因为当FormType=1时,ObjectId=null,所以无法将IFRAME中的数据与当前记录做关联)。

    以上方法供参考,我个人应用比较多的是第一种方法。


    星吧客 | Josh Liang | 梁祝权 | Blog:http://xingbake.cnblogs.com
    问:
    针对第一种:
    1. 如何在 OnSave的时候取消CRM的Save动作
            2. 如何将父窗体(ms crm 表单)所有的数据传递给子窗体(IFRAME)
            3. 怎样提交?是不是要写一个plug in 来处理 ?

    2009年11月11日 8:04