CRM2015 Form,subgrid设置为disabled

今天遇到了一个需求:在状态描述字段为特定值时 需要将Form设置为disabled.
查了一下sdk发现没有这个功能。
bing了一下找打了一个可以直接使用的代码。
参考链接如下:http://xrmguy.com/2014/03/03/crm-2013-make-all-controls-including-subgrids-disabled-onload/
因为subgrid控件不能直接disabled掉(CRM2011可以)。
所以想了一个折中办法,将subgrid上方的【+】与 【显示详细】按钮给隐藏掉。
但是对于subgrid中每行右侧的【删除】按钮并没有隐藏掉,考虑到实际用户使用中不会被分配删除权限。
对于ribbon直接设置ribbon规则即可。
代码如下:

///<summary>
//当【工单】实体中的【状态描述】字段的值不为
//【100000005 驳回】、【100000000 草稿】时需要将表单中所有字段设置为Disabled
///</summary>
PetroCRM.Main.Equip.Serviceworkorder.SetFormDisabled = function () {

    //取得【状态描述】的值
    var statuscode = Xrm.Page.getAttribute("statuscode").getValue();
    // 状态描述为【100000005 驳回】、【100000000 草稿】时直接退出
    if (100000005 == statuscode || 100000000 == statuscode) {
        return;
    }
    makeReadOnly();

}

var intervalId;

function makeReadOnly() {

    try {

        var subgridsLoaded = false;

        Xrm.Page.ui.controls.get().forEach(function (control, index) {
            // formtype=3 readonly
            if (control.setDisabled && Xrm.Page.ui.getFormType() != 3) {

                control.setDisabled(true);
            }
            else {
                removeAddButtonFromSubGrid(control);

                subgridsLoaded = true;
            }

        });

        if ($("div[id$='_crmGridTD']").length > 0 && !subgridsLoaded) {

            intervalId = setInterval(function () {

                var subgridsArr = Xrm.Page.getControl(function (control, index) {

                    return control.getControlType() == 'subgrid';
                });
                subgridsArr.forEach(function (control, index) {

                    removeButtonsFromSubGrid(control);

                });

            }, 500);

        }

    }
    catch (e) {
        alert("makeReadOnly() Error: " + e.message);

    }

}

function removeButtonsFromSubGrid(subgridControl) {

    if (intervalId) {
        var addIamgeButton = $('#' + subgridControl.getName() + '_addImageButton');
        if (addIamgeButton != null && addIamgeButton != undefined) {
            addIamgeButton.css('display', 'none');
        }
        var associatedGridView = $('#' + subgridControl.getName() + '_openAssociatedGridViewImageButton');
        if (associatedGridView != null && associatedGridView != undefined) {
            associatedGridView.css('display', 'none');
        }
        clearInterval(intervalId);

    }

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值