ダイナミクス365クライアントプログラミングの例:2つのリンクフィールドのオプションセット

私はMicrosoft Dynamicsの365&パワープラットフォーム側面は、ラヨーンを設計、マイクロソフト最優秀専門家が3年連続ダイナミクスCRM /ビジネスソリューション側面(マイクロソフトMVP)のために2018年6月から2015年7月ですが、私は公共のマイクロチャネル番号の関心を歓迎しますMSFTDynamics365erLuoYong、返信または20191117 378この記事へのアクセスを容易にすることができる、しかし、あなたは私ボーエンは最初の部屋で発行された最新の情報を得ることができますが、私に従ってください!

:ちょうどクライアントは公式の文書を参照することができます行うにはJavaScriptを使用してプログラミングを学ぶために始めて人々のためにチュートリアル:あなたの最初のクライアントスクリプトの書き込み  クライアントAPIを提供し、ダイナミクス365が参照できるモデル駆動型アプリのクライアントAPIリファレンス、私自身はここで行います二つのオプションの例は、フィールド(省市)結合効果を設定します。もちろん、簡単な代わりにルックアップフィールド(ルックアップ)との変化に、多くのオプション品を推奨。

私は(グローバルは、option []グローバルオプションを作成するために、ノード[新規]ボタンの後に右のスキームが設定されたアドレスにオプションのセットを選択)オプションのグローバルセットを作成しますので、オプションの推奨セットによると、グローバルオプションのフィールドセットを使用することをお勧めします、次の例は、私が意図的に特別に準備後ろのデモンストレーションとしてエンコードされた新しい番号でエンコードしました(2第1の符号化コード化された同じ市道上の2つ、市が県に属しました)。私は3を構築するためにここにいる、湖南省のコードは430000で、湖北省のコードは、広東省420000でコーディング440000です。

 

 

それから私は、オプションのグローバルセットを作成 - 都市を、というように、そのような長沙(430100)、株洲市(430200)、広州(440100)、深セン(440300)、武漢(420100)などの都市、そして数を締結しました。

 

 

私は、フィールドで2つのエンティティ、設定これら二つのオプションの、すなわち使用したオプションの新しいセットを作成し、フォームに配置し、変更を公開します。

 

 

 

 

默认情况下,这两个字段可以选择任何值,比如我可以选择广东省,长沙市,这个是不合理的,需要让其只能选择省下面的城市。

 

 

首先我将城市字段在表单(Form)界面上设置默认为只读(不可编辑),我让其等待选择了省份字段后再解锁可以编辑,如下:

 

 

然后我撰写如下代码,每个代码行为了初学者我都做了注释。

//定义命名空间,我一般用项目统一前缀加上实体去掉前缀后的架构名称(每个单词首字母大写)
var LuoYongWorkOrder = window.LuoYongWorkOrder || {};
(function () {
    //表单上省份字段的OnChange事件处理函数,记得第一个参数用来接受传递过来的executionContext
    this.ProvinceOnChange = function (executionContext) {
        var formContext = executionContext.getFormContext();
        //获取省份字段改变后的新值
        var provinceValue = formContext.getAttribute("ly_province").getValue();
        //将城市字段的值设置为空值
        formContext.getAttribute("ly_city").setValue(null);
        //将城市字段设置为可以更改,表单上已经设置该字段为只读
        formContext.getControl("ly_city").setDisabled(false);
        //获取城市字段的所有可用选项信息
        var cityValidOptions = formContext.getAttribute("ly_city").getOptions();
        //获取城市字段的现在可选的选项信息(用formContext.getControl(arg).removeOption(value)移除的选项不会包括在本结果中)
        var cityCurrentOptions = formContext.getControl("ly_city").getOptions();
        //城市是否展示给用户可以选择
        var cityIsExist = false;
        cityValidOptions.forEach(        
            element => {
                cityIsExist = false;
                cityCurrentOptions.forEach(ele => {
                    if (element.value == ele.value) {
                        cityIsExist = true;//城市展示给用户可以选择
                    }
                });
                //如果这个城市需要显示在可选列表中
                if (element.value >= provinceValue && element.value < provinceValue + 10000) {
                    if (!cityIsExist) {//如果没有显示需要将其添加进来显示
                        formContext.getControl("ly_city").addOption({"value":element.value,"text":element.text});
                    }
                }
                else {//这个城市不需要显示在可选列表中
                    if (cityIsExist) {//如果已经显示,需要将其移除
                        formContext.getControl("ly_city").removeOption(element.value);
                    }
                }
                console.log(element);
            }
        );
    }
}).call(LuoYongWorkOrder);

 

我再在解决方案中新建一个Web 资源,名称需要在整个组织的Web资源名称中唯一,我一般定义一个命名规范,一般是 /{实体去掉前缀后的逻辑名称}/js/{实体去掉前缀后的逻辑名称}{form|ribbon}.js,方便知道这个是给哪个实体用的,是用于表单编程的,还是命令栏的,用 / 符号来构建相对路径。显示名称我一般和我建立的实际文件名称保持一致。类型选择 脚本(JScript) ,语言可以选可以不选,然后点击选择文件(Choose File)按钮选择自己的JavaScript文件,保存后发布。

 

 

再打开工单实体窗体类型为【主要】的窗体,点击Ribbon区的【窗体属性】按钮。

 

 

点击【添加】按钮。

 

 

选择前面步骤创建的Web资源后点击【确定】按钮关闭,我这里不涉及到在窗体的【OnLoad】或者【OnSave】事件执行我撰写的代码。

 

 

然后需要为表单上的省份字段关联字段值变更后执行的代码,双击表单上的【省份】字段(或者选择【省份】字段后点击Ribbon区的【更改属性】按钮),在打开的【字段属性】窗口中,切换到【事件】这个Tab,默认事件是OnChange,刚好是我需要的,所以不需要更改,直接点击【添加】按钮。

 

 

设置如下,库选择我们前面步骤上传的Web资源,函数我这里输入LuoYongWorkOrder.ProvinceOnChange,记得【将执行上下文作为第一个参数传递】这个选项勾选,然后点击【确定】按钮关闭,保存并发布,刷新工单实体的表单页面(F5或者使用强制刷新Ctrl+F5) 就可以测试了。

 

 

我测试了一下,实现了选项集的联动。

 

おすすめ

転載: www.cnblogs.com/luoyong0201/p/Dynamics_365_Client_Programming_Sample_1.html