我们构建了一个 Silverlight 网格,它允许从主实体表单编辑子实体。像冠军一样工作。但是我们必须在 silverlight 控件上有一个单独的保存按钮才能将更新推送回 CRM。我们想做的是让 CRM 表单调用 silverlight 控件上的方法来提醒我们表单正在保存,然后同时将数据保存到 silverlight 表单中。但它只是不工作。到目前为止,我们尝试过的是:
在 Silverlight 控件中,我们有一个公共类:
[ScriptableType]
public class JSModel
{
[ScriptableMember]
public void Save()
{
if (OnSave != null)
{
OnSave(this, new EventArgs());
}
}
public event EventHandler OnSave;
public JSModel()
{
HtmlPage.RegisterScriptableObject("JSModel", this);
HtmlPage.Window.Eval(
@"
function CallSLSave()
{var sl = Xrm.Page.ui.controls.get('" + HtmlPage.Plugin.TagName + @"');
sl.content.JSModel.Save();} ");
ScriptObject xrm = (ScriptObject)HtmlPage.Window.GetProperty("Xrm");
ScriptObject Page = (ScriptObject)xrm.GetProperty("Page");
ScriptObject data = (ScriptObject)Page.GetProperty("data");
ScriptObject entity = (ScriptObject)data.GetProperty("entity");
entity.Invoke("addOnSave", new object[] { "CallSLSave" });
}
}
但它没有调用 javascript 方法。有人知道我们做错了什么吗?