Dynamics crm 基于团队的按钮可见

Dynamics crm 基于团队的按钮可见,dynamics-crm,Dynamics Crm,按钮应基于团队可见。例如,如果登录到“测试团队”的用户部分,“测试按钮”应为启用状态。如果未禁用,则为禁用状态。我使用的是webapi。但它给出的值为空。有任何建议吗 function GetUserTeam() { var clientUrl1 = Xrm.Page.context.getClientUrl(); var oDataPath1 = clientUrl1 + "/api/data/v8.0/"; var req1 = new XMLHttpRequest(); try {

按钮应基于团队可见。例如,如果登录到“测试团队”的用户部分,“测试按钮”应为启用状态。如果未禁用,则为禁用状态。我使用的是webapi。但它给出的值为空。有任何建议吗

 function GetUserTeam() {
var clientUrl1 = Xrm.Page.context.getClientUrl();
var oDataPath1 = clientUrl1 + "/api/data/v8.0/";
var req1 = new XMLHttpRequest();
   try {

    var strTest = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='true'>" +
                    "  <entity name='team'>" +
                    "    <attribute name='name' />" +
                    "    <attribute name='businessunitid' />" +
                    "    <attribute name='teamid' />" +
                    "    <attribute name='teamtype' />" +
                    "    <order attribute='name' descending='false' />" +
                    "    <filter type='and'>" +
                    "      <condition attribute='teamtype' operator='eq' value='0' />" +
                    "    </filter>" +
                    "    <link-entity name='teammembership' from='teamid' to='teamid' visible='false' intersect='true'>" +
                    "      <link-entity name='systemuser' from='systemuserid' to='systemuserid' alias='ab'>" +
                    "        <filter type='and'>" +
                    "          <condition attribute='systemuserid' operator='eq-userid' />" +
                    "        </filter>" +
                    "      </link-entity>" +
                    "    </link-entity>" +
                    "  </entity>" +
                    "</fetch>";
    req1.open("GET", oDataPath1 + "teams?fetchXml=" + encodeURI(strTest), true);
    req1.setRequestHeader("Accept", "application/json");
    req1.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req1.setRequestHeader("OData-MaxVersion", "4.0");
    req1.setRequestHeader("OData-Version", "4.0");
    req1.onreadystatechange = function () {
        if (this.readyState == 4) {
            // debugger;
            req1.onreadystatechange = null;
            if (this.status == 200) {
                var reqResults = JSON.parse(this.response).value;
                if (reqResults != null && reqResults.length > 0) {
                    if ("TestTeam"==reqResults.length[i].name){return true;}

                else{return false;}
                }
                    }//End of for

                }//En of IF

            }

            else {

                var error = JSON.parse(this.response).error;
                alert(error.message);
            }

        }

    };      
    req1.send();              

}
catch (e) {

    alert(e);

}

}
函数GetUserTeam(){ var clientUrl1=Xrm.Page.context.getClientUrl(); var oDataPath1=clientUrl1+“/api/data/v8.0/”; var req1=新的XMLHttpRequest(); 试一试{ var strTest=“”+ " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + ""; 请求1.打开(“获取”,oDataPath1+“团队”?fetchXml=“+encodeURI(strTest),true); 请求1.setRequestHeader(“接受”、“应用程序/json”); 请求1.setRequestHeader(“内容类型”,“应用程序/json;字符集=utf-8”); 请求1.setRequestHeader(“OData MaxVersion”,“4.0”); 请求1.setRequestHeader(“OData版本”、“4.0”); req1.onreadystatechange=功能(){ if(this.readyState==4){ //调试器; req1.onreadystatechange=null; 如果(this.status==200){ var reqResults=JSON.parse(this.response).value; if(reqResults!=null&&reqResults.length>0){ if(“TestTeam”==reqResults.length[i].name){return true;} else{return false;} } }//结束 }//IF的En } 否则{ var error=JSON.parse(this.response).error; 警报(错误消息); } } }; 请求1.send(); } 捕获(e){ 警报(e); } }
感谢您发布示例代码。它有一些语法错误,但我想这是因为你为这篇文章编辑了它。例如,For循环不存在,括号缺失

  • 请求是异步的。未定义的已从方法返回。您可以将XMLHttpRequest更改为同步运行(出于用户体验原因,通常不建议这样做),也可以在有结果时传入回调以调用。在这里,我添加了onSuccess和onError。onSuccess将使用true/false作为是否找到TestTeam的参数

  • 在for循环中,您有reqResults.length[i],您可能指的是reqResults[i]。同样,这可能只是一个编辑发布的问题

  • 因此,如果TestTeam是用户的团队之一,则此代码将使用值true调用onSuccess。如果不是,则为false。或者,如果发生错误,它将调用onError。您可以编辑以构建要传递回的团队数组等,也可以编辑.open()调用以使其运行而不使用回调

    function GetUserTeam(onSuccess, onError) {
        var clientUrl1 = Xrm.Page.context.getClientUrl();
        var oDataPath1 = clientUrl1 + "/api/data/v8.0/";
        var req1 = new XMLHttpRequest();
        try {
    
            var strTest = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='true'>" +
                            "  <entity name='team'>" +
                            "    <attribute name='name' />" +
                            "    <attribute name='businessunitid' />" +
                            "    <attribute name='teamid' />" +
                            "    <attribute name='teamtype' />" +
                            "    <order attribute='name' descending='false' />" +
                            "    <filter type='and'>" +
                            "      <condition attribute='teamtype' operator='eq' value='0' />" +
                            "    </filter>" +
                            "    <link-entity name='teammembership' from='teamid' to='teamid' visible='false' intersect='true'>" +
                            "      <link-entity name='systemuser' from='systemuserid' to='systemuserid' alias='ab'>" +
                            "        <filter type='and'>" +
                            "          <condition attribute='systemuserid' operator='eq-userid' />" +
                            "        </filter>" +
                            "      </link-entity>" +
                            "    </link-entity>" +
                            "  </entity>" +
                            "</fetch>";
            req1.open("GET", oDataPath1 + "teams?fetchXml=" + encodeURI(strTest), true);
            req1.setRequestHeader("Accept", "application/json");
            req1.setRequestHeader("Content-Type", "application/json; charset=utf-8");
            req1.setRequestHeader("OData-MaxVersion", "4.0");
            req1.setRequestHeader("OData-Version", "4.0");
            req1.onreadystatechange = function () {
                if (this.readyState == 4) {
                    // debugger;
                    req1.onreadystatechange = null;
                        if (this.status == 200) {
                            var returnValue = false;
                            var reqResults = JSON.parse(this.response).value;
                            if (reqResults != null && reqResults.length > 0) {
                                for(var i = 0, j = reqResults.length; i < j; i++){
                                    if ("TestTeam" == reqResults[i].name){
                                        returnValue = true;
                                        break;
                                    }
                                }
                            }
    
                            // Call the handler
                            onSuccess && onSuccess(returnValue);
                        }
                        else {
                            var error = JSON.parse(this.response).error;
                            alert(error.message);
                            onError && onError(error);
                        }
                }
            };      
            req1.send();
        }
        catch (e) {
            alert(e);
            onError && onError(e);
        }
    }
    
    函数GetUserTeam(onSuccess,onError){
    var clientUrl1=Xrm.Page.context.getClientUrl();
    var oDataPath1=clientUrl1+“/api/data/v8.0/”;
    var req1=新的XMLHttpRequest();
    试一试{
    var strTest=“”+
    "  " +
    "    " +
    "    " +
    "    " +
    "    " +
    "    " +
    "    " +
    "      " +
    "    " +
    "    " +
    "      " +
    "        " +
    "          " +
    "        " +
    "      " +
    "    " +
    "  " +
    "";
    请求1.打开(“获取”,oDataPath1+“团队”?fetchXml=“+encodeURI(strTest),true);
    请求1.setRequestHeader(“接受”、“应用程序/json”);
    请求1.setRequestHeader(“内容类型”,“应用程序/json;字符集=utf-8”);
    请求1.setRequestHeader(“OData MaxVersion”,“4.0”);
    请求1.setRequestHeader(“OData版本”、“4.0”);
    req1.onreadystatechange=功能(){
    if(this.readyState==4){
    //调试器;
    req1.onreadystatechange=null;
    如果(this.status==200){
    var returnValue=false;
    var reqResults=JSON.parse(this.response).value;
    if(reqResults!=null&&reqResults.length>0){
    对于(变量i=0,j=reqResults.length;i
    这当然是可以在动力学中实现的。显示给出空值的代码。我得到了返回值。但当我使用功能区按钮调用此函数时,按钮不是禁用/启用。很抱歉延迟重播。非常感谢,我刚刚修改了u r代码。现在我可以隐藏/显示按钮。请找到以下几点。我已经声明了一个全局变量,比如var teamValu=false;然后,我编写了单独的函数[Usehestam]。我检查teamvalue是否为null或未定义,设置