プライマリ エンティティ フォームからサブ エンティティを編集できる 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 メソッドを呼び出していません。私たちが間違っていることを知っている人はいますか?