子网格:限制用户只选择一条记录

时间:2013-12-18 11:21:16

标签: javascript dynamics-crm-2011 dynamics-crm crm

我在自定义实体表单上有一个子网格,我在其中显示了案例实体的相关记录。我想限制用户只选择一条记录。我如何使用crm 2011中的javascript实现这一目标

2 个答案:

答案 0 :(得分:1)

有时候应该支持不支持!!!特别是当需要走完整个距离来实现这种简单的UI请求时。 Subgird拥有所有这些可以使用的好方法,由于某些原因,Microsoft坚持不将其暴露为SDK。那太傻了。 我也会寻找一个JavaScript解决方案。这是一些可以帮助您完成任务的伪代码。 (未经测试但应该让你走上正轨)

代码在内部crm网格控件上创建一个简单的包装器并使用它的方法。

function xGrid(sId) {
    var o = this;
    o.Dom = document.getElementById(sId);

    if (!o.Dom) 
        return alret("this subgrid: " + sId + " is not on the form!");

    o.Grid = o.Dom.contorl;

    o.GetSelectedIds = function () {
            return o.Grid && o.Grid.get_selectedIds();
    }

    o.AddOnSelectionChange = function (fCallback) {
            o.Grid && o.Grid.add_onSelectionChange(fCallback);
            return o;
    }

}

您可以在页面加载时创建xGrid,即

function OnCrmPageLoad() {
    window.MyGrid = new xGrid("SubGrid_Test");
    MyGrid.AddOnSelectionChange(SubGridTestChanged);
}

然后调用下面的函数,然后选择更改

function SubGridTestChanged() {
    if (MyGrid.GetSelectedIds().length > 1)
        alert("You’re only allowed to pick 1 record at a time");
} 

答案 1 :(得分:0)

实现此检查的一种受支持的方法是在关联/取消关联消息上创建同步插件,该插件将检查是否关联了多个记录以及throw和exception,以便向用户显示警告以仅选择一个记录。