Quantcast
Channel: CRM Development forum
Viewing all 465 articles
Browse latest View live

how to unshare the shared record using plugin dynamics crm 2013

$
0
0

i did share a record to another user using plugin.but the same record unsharing using plugin. but its not getting me.below is my code.the record is still exists in that user.

 if (context.InputParameters.Contains("Target") && (context.InputParameters["Target"]) is Entity)
            {
                Entity en = (Entity)context.InputParameters["Target"];
                RevokeAccessRequest revokeaccess = new RevokeAccessRequest();
                revokeaccess.Target = new EntityReference(en.LogicalName,en.Id);
                Guid id = new Guid("C059255F-5930-4DD2-A2B9-61273359C123");
                revokeaccess.Revokee = new EntityReference("systemuser",id);
                RevokeAccessResponse revokeresponse = (RevokeAccessResponse)service.Execute(revokeaccess);
            }

where i'm doing wrong.


hsk srinivas


Filtered lookup field default view issue CRM 2011

$
0
0

Hi everyone,

i'm exepriencing a strange issue tempting to filter a lookup dialog in Connection system entity.
In substance i created a Jscript that is fired on "Name" field OnChange event: if the chosen entity type is "systemuser" the Jscript adds to the lookup field "As this role" a custom view filtered only on my roles with success. Adding the view i set it as default but, inexplicably, the default view is not changed (compared to usual) and i can visualize all system connection roles.

I also tried to disable programmatically the view picker, again without success.

Here is my code:

function OnDestinationChange() {
    var connectionDestinationType = Xrm.Page.getAttribute("record2id").getValue()[0].entityType;

    if (connectionDestinationType == "systemuser") {
        var defaultLookupViewId = "{108E1BE5-BE0B-4B9F-9827-80841CDD5F48}";

        var viewId = "{B21D26A7-6E68-4775-A425-CC045E832E7F}";
        var entityName = "connectionrole";
        var displayName = "Ruoli di connessione filtrati";

        var fetchXml = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" +"<entity name='connectionrole'>" +"<attribute name='category' />" +"<attribute name='name' />" +"<attribute name='connectionroleid' />" +"<attribute name='statecode' />" +"<order attribute='category' descending='false' />" +"<filter type='and'>" +"<condition attribute='name' operator='eq' value='Parte Interessata' />" +"</filter>" +"</entity>" +"</fetch>";

        var layoutXml = "<grid name='resultset' object='1' jump='connectionroleid' select='1' icon='1' preview='1'>" +"<row name='result' id='connectionroleid'>" +"<cell name='name' width='200' />" +"<cell name='category' width='200'/>" +"</row>" +"</grid>";

        Xrm.Page.getControl("record2roleid").addCustomView(viewId, entityName, displayName, fetchXml, layoutXml, true);
        document.getElementById("record2roleid").disableViewPicker = 1;
    }
    else {
        document.getElementById("record2roleid").disableViewPicker = 0;
        Xrm.Page.getControl("record2roleid").setDefaultView(defaultLookupViewId);
    }
}
Can someone help me?

Thanks in advance.



How can I use a late bound attribute as the DataTextField of a combobox in asp.net?

$
0
0

Relevant snipped from my aspx page:

<telerik:RadComboBox runat="server" AutoPostBack="True" ID="CboLists" EmptyMessage="Kies een marketinglijst"
         DataValueField="Id" HighlightTemplatedItems="True" OnSelectedIndexChanged="CboLists_OnSelectedIndexChanged"
        Width="200px" DataSourceID="MarketingListDataSource" DataTextField="<!--What do I enter here?-->"><ItemTemplate><table><tr><td><b><%# DataBinder.Eval(Container.DataItem, "Attributes['listname']") %></b> (<%# ViewHelper.GetBooleanValue("list", "type",(bool)((Entity)Container.DataItem).Attributes["type"]) %>)</td></tr><tr><td><%# DataBinder.Eval(Container.DataItem, "Attributes['membercount']") %> Leden</td></tr></table></ItemTemplate></telerik:RadComboBox><asp:ObjectDataSource runat="server" ID="MarketingListDataSource" TypeName="aca.crm2011.sendgrid.MarketingListEngine"
         OnObjectCreating="MarketingListDataSource_OnObjectCreating" SelectMethod="GetAllMarketingLists"/>

I want to display the listname as the DataTextField of my combobox. Is there a way to do this without using early binding?

Updating CRM entity using Kendo UI grid

$
0
0

Hello,

i found example of integrating kendo UI grid with CRM 2011 http://code.msdn.microsoft.com/Kendo-UI-DataSource-Kendo-33a3dc77#content.

This example shows how to fetch data from CRM 2011 and show this data in Kendo UI grid, but there is no example of how to update entity. Example above is for CRM 2011, but works also in CRM 2013 (which I use).

I am trying to make this work in CRM, but there are some differences between the format of HTTP request of Kendo UI grid (when row is updated) and the format which CRM OData endpoint expects.

I found example in CRM SDK for updating entity through JavaScript (http://msdn.microsoft.com/en-us/library/gg309549.aspx).

1.question:

Debugging through IE, i see that URL of the updated entity (Account) needs to be in this format:

/Test13/XRMServices/2011/OrganizationData.svc/AccountSet(guid'e612bae1-5803-e411-80c9-00155d0a0aac')

I need to fetch account GUID of updated row and somehow put it in the url.

How can I make my URL look like in the example above?

2.question:

I need to have a body of HTTP request in the following format:

{"Name":"Updated Account Name","Address1_AddressTypeCode":{"Value":3},"Address1_City":"Sammamish","Address1_Line1":"123 Maple St.","Address1_PostalCode":"98074","Address1_StateOrProvince":"WA","EMailAddress1":"someone@microsoft.com"}

I tried to get this by modifying parameterMap in Kendo grid datasource definition, so that it uses JSON data of selected row, but i get too much data. I get data in the following format:

{"__metadata":{"uri":"https://crm13.dev.teched.hr/Test13/XRMServices/2011/OrganizationData.svc/AccountSet(guid'bdaf6deb-f9e7-e311-80c3-00155d0a0aac')","type":"Microsoft.Crm.Sdk.Data.Services.Account"},"TerritoryCode":{"__metadata":{"type":"Microsoft.Crm.Sdk.Data.Services.OptionSetValue"},"Value":1},"LastUsedInCampaign":null,"Address1_Name":null,"TimeZoneRuleVersionNumber":null,"OverriddenCreatedOn":null,"EntityImageId":null,"OwnershipCode":{"__metadata":{"type":"Microsoft.Crm.Sdk.Data.Services.OptionSetValue"},"Value":null},"CustomerSizeCode":{"__metadata":{"type":"Microsoft.Crm.Sdk.Data.Services.OptionSetValue"},"Value":1},"PrimaryContactId":{"__metadata":{"type":"Microsoft.Crm.Sdk.Data.Services.EntityReference"},"Id":"23b06deb-f9e7-e311-80c3-00155d0a0aac","LogicalName":"contact","Name":"Yvonne McKay (sample)"},"CreditLimit":{"__metadata":{"type":"Microsoft.Crm.Sdk.Data.Services.Money"},"Value":null},"EMailAddress2":null,"VersionNumber":null,"Address1_County":null,"EntityImage_Timestamp":null,"Telephone3":null,"DoNotBulkPostalMail":false,"Address1_FreightTermsCode":{"__metadata":{"type":"Microsoft.Crm.Sdk.Data.Services.OptionSetValue"},"Value":null},"Address2_Line1":null,"Aging90":{"__metadata":{"type":"Microsoft.Crm.Sdk.Data.Services.Money"},"Value":null},"DoNotPostalMail":false,"Telephone2":null,"OwningBusinessUnit":

etc.

How can I get this in correct format?

3.question

I see that CRM OData endpoint expects X-HTTP-METHOD = MERGE when the entity is updated.

How can I do this with Kendo grid and when row is updating.

I will continue to make this work, but if someone has experience with this, i would be grateful.

My complete HTML with Javascript :

<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="utf-8" /><title>Kendo UI Demo</title><!-- CDN-based stylesheet references for Kendo UI Web --><link rel="stylesheet" href="http://cdn.kendostatic.com/2012.2.913/styles/kendo.common.min.css" /><link rel="stylesheet" href="http://cdn.kendostatic.com/2012.2.913/styles/kendo.default.min.css" /></head><body style="border-width: 0px; padding-left: 0px; padding-top: 0px; margin-left: 0px; margin-top: 0px; margin-bottom: 0px; margin-right: 0px"><div id="grid"></div><!-- CDN-based script reference for jQuery --><script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script><!-- CDN-based script reference for Kendo UI DataViz --><script type="text/javascript" src="http://cdn.kendostatic.com/2012.2.913/js/kendo.web.min.js"></script><script type="text/javascript" src="ClientGlobalContext.js.aspx"></script><script type="text/javascript">
        $(document).ready(function ($) {

            var context = GetGlobalContext();

            var serverUrl = window.parent.document.location.protocol + '//' + window.parent.document.location.host + '/' + context.getOrgUniqueName();

            dataSource = new kendo.data.DataSource({
                transport: {
                    read: {
                        url: serverUrl + "/XRMServices/2011/OrganizationData.svc/AccountSet",
                        dataType: 'json'
                    },
                    update: {
                        url: serverUrl + "/XRMServices/2011/OrganizationData.svc/AccountSet",
                        dataType: "jsonp",
                        type: "POST"
                    },
                    destroy: {
                        url: serverUrl + "/XRMServices/2011/OrganizationData.svc/AccountSet",
                        dataType: "jsonp"
                    },
                    create: {
                        url: serverUrl + "/XRMServices/2011/OrganizationData.svc/AccountSet",
                        dataType: "jsonp"
                    },


                    //parameterMap: function (options) {
                    //    var parameter = {
                    //        $select: 'Name,Telephone1,Address1_City'
                    //    };

                    //    return parameter;
                    //}

                    parameterMap: function (options, operation) {
                        if (operation !== "read") {

                            var tr = grid.table.find("tr").find("td:first input").attr("checked", "true").closest("tr");

                            var selectedRowJSON = $("#grid").data("kendoGrid").dataItem(tr).toJSON();


                            var postData = kendo.stringify(selectedRowJSON);

                            return postData;
                        }
                    }
                },
                batch: false,
                schema: {
                    model: {
                        id: "AccountId",
                        fields: {
                            Name: { type: "string" },
                            Telephone1: { type: "string" },
                            Address1_City: { type: "string" }
                        }
                    },
                    total: function (data) {

                        var fetchXml = '<fetch mapping="logical" aggregate="true">' +
                                           '<entity name="account">' +"<attribute name='accountid' alias='count' aggregate='count'/>" +
                                           '</entity>' +
                                       '</fetch>';

                        var _oService = new FetchUtil(context.getOrgUniqueName(), serverUrl);
                        var res = _oService.Fetch(fetchXml);

                        var count = res[0].attributes.count.formattedValue;

                        return count;
                    },
                    parse: function (data) {
                        return data.d.results;
                    },
                    type: "json"
                },
                serverPaging: true,
                pageSize: 10,
                serverSorting: true,
                sort: { field: "Name", dir: "asc" }
            });

            var grid = $("#grid").kendoGrid({
                dataSource: dataSource,
                height: 450,
                columns: [

                {
                    template: '<input type="checkbox" />',
                    sortable: false,
                    width: 45
                },
                {
                    title: 'Account Name',
                    field: "Name",
                    width: 180
                },
                {
                    title: 'Main Phone',
                    field: "Telephone1",
                    width: 300
                },
                {
                    title: 'Address 1: City',
                    field: "Address1_City",
                    filterable: false,
                    width: 300,
                    sortable: false
                },
				{
				    command: ["edit", "destroy"],
				    title: "&nbsp;",
				    width: "200px"
				}
                ],
                toolbar: ["create"],
                editable: "inline",
                pageable: true,
                selectable: "multiple, row",
                sortable: {
                    mode: 'single',
                    allowUnsort: false
                },
                dataBound: function () {
                    grid.table.find("tr").find("td:first input")
                        .change(function (e) {
                            if (!$(this).prop('checked')) {
                                grid.clearSelection();
                            }
                        });
                },
                change: function (e) {
                    window.setTimeout(function () {
                        var checkbox = $(e.sender.select()[0]).find("td:first input").prop("checked", true);
                        grid.table.find("tr").find("td:first input:checked").not(checkbox).prop("checked", false);
                    }, 0);
                }

            }).data("kendoGrid");

            grid.thead.find("th:first")
                .append($('<input class="selectAll" type="checkbox"/>'))
                .delegate(".selectAll", "click", function () {
                    var checkbox = $(this);

                    grid.table.find("tr")
                        .find("td:first input")
                        .attr("checked", checkbox.is(":checked"))
                        .trigger("change");
                });
        }).ajaxSend(function (e, jqxhr, settings) {
            if (settings.url.toLowerCase().indexOf("XRMServices/2011/OrganizationData.svc".toLowerCase()) >= 0) {
                jqxhr.setRequestHeader("Accept", "application/json");
            }
        });</script><script id="FetchUtil" type="text/javascript">
        var XMLHTTPSUCCESS = 200;
        var XMLHTTPREADY = 4;

        function FetchUtil(sOrg, sServer) {
            this.org = sOrg;
            this.server = sServer;

            if (sOrg == null) {
                if (typeof (ORG_UNIQUE_NAME) != "undefined") {
                    this.org = ORG_UNIQUE_NAME;
                }
            }

            if (sServer == null) {
                this.server = window.location.protocol + "//" + window.location.host;
            }
        }

        FetchUtil.prototype._ExecuteRequest = function (sXml, sMessage, fInternalCallback, fUserCallback) {
            var xmlhttp = new XMLHttpRequest();
            xmlhttp.open("POST", this.server + "/XRMServices/2011/Organization.svc/web", (fUserCallback != null));
            xmlhttp.setRequestHeader("Accept", "application/xml, text/xml, */*");
            xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
            xmlhttp.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute");

            if (fUserCallback != null) {
                //asynchronous: register callback function, then send the request.
                var crmServiceObject = this;
                xmlhttp.onreadystatechange = function () {
                    fInternalCallback.call(crmServiceObject, xmlhttp, fUserCallback)
                };
                xmlhttp.send(sXml);
            } else {
                //synchronous: send request, then call the callback function directly
                xmlhttp.send(sXml);
                return fInternalCallback.call(this, xmlhttp, null);
            }
        }

        FetchUtil.prototype._HandleErrors = function (xmlhttp) {
            /// <summary>(private) Handles xmlhttp errors</summary>
            if (xmlhttp.status != XMLHTTPSUCCESS) {
                var sError = "Error: " + xmlhttp.responseText + " " + xmlhttp.statusText;
                alert(sError);
                return true;
            } else {
                return false;
            }
        }

        FetchUtil.prototype.Fetch = function (sFetchXml, fCallback) {
            /// <summary>Execute a FetchXml request. (result is the response XML)</summary>
            /// <param name=”sFetchXml”>fetchxml string</param>
            /// <param name=”fCallback” optional=”true” type=”function”>(Optional) Async callback function if specified. If left null, function is synchronous </param>

            var request = "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">";
            request += "<s:Body>";

            request += '<Execute xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services">' + '<request i:type="b:RetrieveMultipleRequest" ' + ' xmlns:b="http://schemas.microsoft.com/xrm/2011/Contracts" ' + ' xmlns:i="http://www.w3.org/2001/XMLSchema-instance">' + '<b:Parameters xmlns:c="http://schemas.datacontract.org/2004/07/System.Collections.Generic">' + '<b:KeyValuePairOfstringanyType>' + '<c:key>Query</c:key>' + '<c:value i:type="b:FetchExpression">' + '<b:Query>';

            request += CrmEncodeDecode.CrmXmlEncode(sFetchXml);

            request += '</b:Query>' + '</c:value>' + '</b:KeyValuePairOfstringanyType>' + '</b:Parameters>' + '<b:RequestId i:nil="true"/>' + '<b:RequestName>RetrieveMultiple</b:RequestName>' + '</request>' + '</Execute>';

            request += '</s:Body></s:Envelope>';

            return this._ExecuteRequest(request, "Fetch", this._FetchCallback, fCallback);
        }

        FetchUtil.prototype._FetchCallback = function (xmlhttp, callback) {
            ///<summary>(private) Fetch message callback.</summary>
            //xmlhttp must be completed
            if (xmlhttp.readyState != XMLHTTPREADY) {
                return;
            }

            //check for server errors
            if (this._HandleErrors(xmlhttp)) {
                return;
            }

            var sFetchResult = xmlhttp.responseXML.selectSingleNode("//a:Entities").xml;

            var resultDoc = new ActiveXObject("Microsoft.XMLDOM");
            resultDoc.async = false;
            resultDoc.loadXML(sFetchResult);

            //parse result xml into array of jsDynamicEntity objects
            var results = new Array(resultDoc.firstChild.childNodes.length);

            for (var i = 0; i < resultDoc.firstChild.childNodes.length; i++) {
                var oResultNode = resultDoc.firstChild.childNodes[i];
                var jDE = new jsDynamicEntity();
                var obj = new Object();

                for (var j = 0; j < oResultNode.childNodes.length; j++) {
                    switch (oResultNode.childNodes[j].baseName) {
                        case "Attributes":
                            var attr = oResultNode.childNodes[j];

                            for (var k = 0; k < attr.childNodes.length; k++) {

                                // Establish the Key for the Attribute
                                var sKey = attr.childNodes[k].firstChild.text;
                                var sType = '';

                                // Determine the Type of Attribute value we should expect
                                for (var l = 0; l < attr.childNodes[k].childNodes[1].attributes.length; l++) {
                                    if (attr.childNodes[k].childNodes[1].attributes[l].baseName == 'type') {
                                        sType = attr.childNodes[k].childNodes[1].attributes[l].text;
                                    }
                                }

                                switch (sType) {
                                    case "a:OptionSetValue":
                                        var entOSV = new jsOptionSetValue();
                                        entOSV.type = sType;
                                        entOSV.value = attr.childNodes[k].childNodes[1].text;
                                        obj[sKey] = entOSV;
                                        break;

                                    case "a:EntityReference":
                                        var entRef = new jsEntityReference();
                                        entRef.type = sType;
                                        entRef.guid = attr.childNodes[k].childNodes[1].childNodes[0].text;
                                        entRef.logicalName = attr.childNodes[k].childNodes[1].childNodes[1].text;
                                        entRef.name = attr.childNodes[k].childNodes[1].childNodes[2].text;
                                        obj[sKey] = entRef;
                                        break;

                                    default:
                                        var entCV = new jsCrmValue();
                                        entCV.type = sType;
                                        entCV.value = attr.childNodes[k].childNodes[1].text;
                                        obj[sKey] = entCV;

                                        break;
                                }
                            }

                            jDE.attributes = obj;
                            break;

                        case "Id":
                            jDE.guid = oResultNode.childNodes[j].text;
                            break;

                        case "LogicalName":
                            jDE.logicalName = oResultNode.childNodes[j].text;
                            break;

                        case "FormattedValues":
                            var foVal = oResultNode.childNodes[j];

                            for (var k = 0; k < foVal.childNodes.length; k++) {
                                // Establish the Key, we are going to fill in the formatted value of the already found attribute
                                var sKey = foVal.childNodes[k].firstChild.text;

                                jDE.attributes[sKey].formattedValue = foVal.childNodes[k].childNodes[1].text;
                            }
                            break;
                    }
                }
                results[i] = jDE;
            }

            //return entities
            if (callback != null) callback(results);
            else return results;
        }

        function jsDynamicEntity(gID, sLogicalName) {
            this.guid = gID;
            this.logicalName = sLogicalName;
            this.attributes = new Object();
        }

        function jsCrmValue(sType, sValue) {
            this.type = sType;
            this.value = sValue;
        }

        function jsEntityReference(gID, sLogicalName, sName) {
            this.guid = gID;
            this.logicalName = sLogicalName;
            this.name = sName;
            this.type = 'EntityReference';
        }

        function jsOptionSetValue(iValue, sFormattedValue) {
            this.value = iValue;
            this.formattedValue = sFormattedValue;
            this.type = 'OptionSetValue';
        }
    </script></body></html>

Trouble with LookUp in merging 2 dataset

$
0
0

Dear all

I have the following Expression in a Tablix called CustomerInfo

=Lookup(Fields!ab_primarycontactid.Value,Fields!contactid.Value, Fields!fullname.Value, "Contact")

The CustomerInfo Table as a its source pointing to a QuoteDataset which contains ab_primarycontactid field

I try to retrieve the primary contact information located in a Dataset "Contact" but the lookup field return empty.

Each dataset is corresponding to 2 different FetchXML content

Any idea why I cannot retrieve the fullname ofmy primary contact ?

thanks ofr your help

regards


Your knowledge is enhanced by that of others.

ActivityParty attribute partyobjecttypecode missing from XrmSvcToolkit.fetch

$
0
0

Hi!

I'm doing a fetch(JavaScript XrmSvcToolkit.fetch) from ActivityParty and the attribute partyobjecttypecode is missing from the result...

var entityId = Xrm.Page.data.entity.getId();
var activitypartyFetchXml = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='true'> "+ "<entity name='activityparty'> "+ "<filter type='and'> "+ "<condition attribute='ispartydeleted' operator='eq' value='0' />"+ "<condition attribute='activityid' operator='eq' value='" + entityId + "'/>"+ "<condition attribute='partyobjecttypecode' operator='in'><value>1</value><value>2</value></condition>"+ "</filter> "+ "</entity> "+ "</fetch>";

    XrmSvcToolkit.fetch({
        fetchXml: activitypartyFetchXml,
        async: false,
        successCallback: function (result) {

                   },
        errorCallback: function (error) {
            alert("Getting activityparty failed: " + error.description);
        }
    });

The result is:

<resultset morerecords="0" paging-cookie="&lt;cookie page=&quot;1&quot;&gt;&lt;activitypartyid last=&quot;{A5E6D853-0517-E411-B960-0050563001C5}&quot; first=&quot;{A5E6D853-0517-E411-B960-0050563001C5}&quot; /&gt;&lt;/cookie&gt;"><result><donotemail name="Allow">0</donotemail><partyid dsc="" type="1" name="The TestAccount Company">{7978B6CD-EBF5-E311-AC24-0050563001C5}</partyid><activityid type="4200">{A3E6D853-0517-E411-B960-0050563001C5}</activityid><donotfax name="Allow">0</donotfax><activitypartyid>{A5E6D853-0517-E411-B960-0050563001C5}</activitypartyid><donotpostalmail name="Allow">0</donotpostalmail><participationtypemask name="To Recipient" formattedvalue="2">2</participationtypemask><ispartydeleted name="No">0</ispartydeleted><ownerid type="8">{E76A4FB6-45DF-E311-AC24-0050563001C5}</ownerid><instancetypecode name="Not Recurring" formattedvalue="0">0</instancetypecode><donotphone name="Allow">0</donotphone></result></resultset>

I can read the id and name but

not the type of "partyid".

result.entities[0].partyid.Id  --> OK

result.entities[0].partyid.Name --> OK

result.entities[0].partyid.Type --> NOT OK

Why is partyobjecttypecode missing in the result and how is it possible to read the "type" from the partyid node?

Br Knut

i'm getting error while creating case record using Odata Rest Services

$
0
0

i'm trying to Create Case Record using Odata Rest Services.but i'm getting error.

I think problem with lookup field.

function test() {
debugger;

var PostID = Xrm.Page.getAttribute("ism_name").getValue();
var ismaccount = Xrm.Page.getAttribute("ism_account").getValue()[0].name;
//var ismcontact = Xrm.Page.getAttribute("ism_contact").getValue();

var serverUrl = document.location.protocol + "//" + document.location.host;

var incident = {};
incident.Title = PostID;

incident.CustomerId = ismaccount;
var jsonEntity = window.JSON.stringify(incident);
//incident.Description = "Dynamicallty created record using REST Odata";

var oDataPath = serverUrl + "/Retail/XRMServices/2011/OrganizationData.svc";
var retrieveReq = new XMLHttpRequest();
var Odata = oDataPath + "/IncidentSet";

retrieveReq.open("POST", Odata, true);
retrieveReq.setRequestHeader("Accept", "application/json");
retrieveReq.setRequestHeader("Content-Type", "application/json;charset=utf-8");
retrieveReq.setRequestHeader("X-HTTP-Method", "CREATE");
retrieveReq.send(JSON.stringify(jsonEntity));
}
Could anybody plz help me out

hsk srinivas

Xrm.Utility.confirmDialog bug or feature ?

$
0
0

In SDK 2013 and online there’s a note regarding usage of blocking modal windows and mobile devices:

   "If you use window.alert in your form scripts the message you set will automatically be displayed using Xrm.Utility.alertDialog without a callback function specified, but this is temporary and    

     is already considered deprecated. You should move any code using window.alert to use Xrm.Utility.alertDialog instead".

I moved my SDK xrmForm.Confirm utility which underneath used window.confirm to Xrm.Utility.confirmDialog to support none blocking devices only to find that the confirmDialog does not return a value (true or false) when browsed from a web application. The confirmDialog does use a regular blocking confirm but the function does not return anything (see first Confirm method in my code sample) . This forced me to check if the client is a mobile device myself and use window.confirm if it’s not.  (see second confirm method in my code sample)

Using the second Confirm method is in contrast to MS statement, So the question is: Do we need to test for mobile ourselves or should we expect the function to do that for us (BUG)?

function XrmForm() {
    var xfrm = this;

    //First Confirm returns undefined
    xfrm.Confirm (message, onOk , onCancel) {
        return Xrm.Utility.confirmDialog(message,onOk, onCancel);
    }

    //Second Confirm
    xfrm.Confirm (message, onOk, onCancel) {
        var result;
        if (xfrm.IsMobile())
            Xrm.Utility.confirmDialog(message,onOk, onCancel);
        else
            result = window.confirm(message);
        return result;
    }

    xfrm.IsMobile = function() {
        return context.client.getClient() === "Mobile";
    }
}

Cheers,

Adi


Dynamics CRM - Thinking outside the Box


CRM 2013 SP1: Custom Action - New bug introduced

$
0
0

Hi,

I was using following SOAP XML to invoke my custom action in CRM 2013. The custom action does not accept any input parameter. However, to invoke a custom action from JavaScript, you have to have a Target parameter passed in, else the action invocation used to fail.

function ExecuteAction(actionName)
{
	// Creating the request XML for calling the Action
		requestXML += "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">";
		requestXML += "  <s:Body>";
		requestXML += "    <Execute xmlns=\"http://schemas.microsoft.com/xrm/2011/Contracts/Services\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">";
		requestXML += "      <request xmlns:a=\"http://schemas.microsoft.com/xrm/2011/Contracts\">";
		requestXML += "        <a:Parameters xmlns:b=\"http://schemas.datacontract.org/2004/07/System.Collections.Generic\">";
		requestXML += "          <a:KeyValuePairOfstringanyType>";
		requestXML += "            <b:key>Target</b:key>";
		requestXML += "            <b:value i:type=\"a:EntityReference\">";
		requestXML += "              <a:Id>" + Xrm.Page.data.entity.getId() + "</a:Id>";
		requestXML += "              <a:LogicalName>" + Xrm.Page.data.entity.getEntityName() + "</a:LogicalName>";
		requestXML += "              <a:Name i:nil=\"true\" />";
		requestXML += "            </b:value>";
		requestXML += "          </a:KeyValuePairOfstringanyType>";
		requestXML += "        </a:Parameters>";
		requestXML += "        <a:RequestId i:nil=\"true\" />";
		requestXML += "        <a:RequestName>" + actionName + "</a:RequestName>";
		requestXML += "      </request>";
		requestXML += "    </Execute>";
		requestXML += "  </s:Body>";
		requestXML += "</s:Envelope>";


	var req = new XMLHttpRequest();
	req.open("POST", GetServiceUrl(), false)
	req.setRequestHeader("Accept", "application/xml, text/xml, */*");
	req.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
	req.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute");
	req.send(requestXML);

	//refresh the page if the request was successful.
	if (req.status == 200)
	{
		if (refreshPage)
		{
			RefreshForm()
		}
	}
	else
	{
		Xrm.Utility.alertDialog(req.statusText + "\n" + req.responseXML.getElementsByTagName("faultstring")[0].textContent);
	}
}

Now with SP 1 installed, the same JavaScript throws "Internal Server Error Unrecognized request parameter: Target" error. Why further break what was already broken and throw everybody's workaround out of whack?


XML Validation with XSD fails because of xs:sequence for complexType

$
0
0

Hi,

I have xsd which has complextype elements with xs:sequence to maintain the order of child elements inside the parent element. I am using dataset to read the xsd and read the data from some other text file.

After creating the xml file (by using dataset.GetXml();) i am validating the xml file against the xsd. But validation is getting failed.

I unerstand that if i change xs:sequence to xs:all then validation error will not come. But i want to maintain the order in xml file. and more important is i dont want to do any change in xsd file.

Please help me on this ASAP.

sample XSD data as below :  

<xs:complexType name="testdata"><xs:sequence><xs:element ref="Cur1" minOccurs="0"/><xs:element ref="SecIDSource" minOccurs="1" maxOccurs="1"/><xs:element ref="SecId" minOccurs="1" maxOccurs="1"/><xs:element ref="Symbol" minOccurs="0"/><xs:element ref="SecurityDesc" minOccurs="0"/><xs:element ref="SettlCurrency" minOccurs="0"/><xs:element ref="MaturityMonthYear" minOccurs="0"/><xs:element ref="StrikePrice" minOccurs="0"/><xs:element ref="SecurityExchange" minOccurs="0"/><xs:element ref="ContractMultiplier" minOccurs="0"/></xs:sequence></xs:testdata>

CRM Custom Workflow - System.Security.SecurityException

$
0
0

Hi,

I'm working on a Dynamics CRM 2011 custom workflow to enhance the standard SharePoint integration.

The purpose of the workflow is to create a folder with a more specicif name than the standard account name, also containing the customer number. The workflow will work against SharePoint online.

I have planned to use the SharePoint client libraries: Microsoft.SharePoint.Client, Microsoft.SharePoint.Client.Runtime, and Microsoft.SharePoint.UserProfiles. These DLL-files are included in the package with a ilmerge build event:

COPY $(TargetDir)$(TargetName).dll temp.dll
$(ProjectDir)ILMergeexe\ILMerge.exe /out:$(TargetDir)$(TargetName).dll temp.dll $(TargetDir)Microsoft.SharePoint.Client.dll $(TargetDir)Microsoft.SharePoint.Client.Runtime.dll $(TargetDir)Microsoft.SharePoint.Client.UserProfiles.dll  /keyfile:$(ProjectDir)versjon2.snk /targetplatform:v4,"C:\Windows\Microsoft.NET\Framework\v4.0.30319" /copyattrs 
DEL  $(TargetDir)temp.dll

The SharePoint code is working perfectly when I'm running it from Visual Studio, but it fails when I run it through CRM. The exception i get is a System.Security.SecurityException:

Unhandled Exception: Microsoft.Xrm.Sdk.InvalidPluginExecutionException: System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
   at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
   at System.Security.CodeAccessPermission.Demand()
   at System.Net.AuthenticationManager.Register(IAuthenticationModule authenticationModule)
   at Microsoft.SharePoint.Client.SharePointOnlineAuthenticationModule.EnsureRegistered()
   at Microsoft.SharePoint.Client.SharePointOnlineCredentials..ctor(String username, SecureString password)
   at SPOnlineClient.SPFolderHelper.GenerateCredentials(String username, String password)
   at SPOnlineClient.SPFolderHelper..ctor(String siteUrl, String username, String password, String listName)
   at Skill.ITAS.SharePointFolderWF.SharePointFolderWF.CreateSharePointFolder(String folderName)
   at Skill.ITAS.SharePointFolderWF.SharePointFolderWF.HandleCreate(IOrganizationService service, IWorkflowContext context)
The action that failed was:
Demand
The type of the first permission that failed was:
System.Security.Permissions.SecurityPermission
The Zone of the assembly that failed was:
MyComputer

The simple code where it fails is the first place i try to call one of the three Microsoft libraries I'm including. The call is not referring to any external connection, only creating SharePointCredentials:

 private SharePointOnlineCredentials GenerateCredentials(string username, string password)
        {
            var pwd = new System.Security.SecureString();
            foreach (char eachChar in password)
            {
                pwd.AppendChar(eachChar);
            }
            return new SharePointOnlineCredentials(username, pwd);

        }

This makes me think that the error is somehow related to access of these third party libraries. 

I would very much appreciate any help or hints to point me in the direction of a possible solution!

Best Regards,

Trond


Trond


Custom workflow activity - Testing InArgument for null values

$
0
0

Not sure if I'm over thinking or not thinking at all.
The scenario is:

I have a "Not Required" input parameter that accepts an "int".
I tried to make it an InArgument<int?> but it won't register, CRM says it is an unsupported type.

Anyways, the user interface will accpet numeric values and also, an empty field.
The problem is that when the user leave it empty, the the "Get" method will return "0" (because it is not nullable I guess).
In many cases it is enough but for this particular project I need to know the user didn't enter any data.

Looks like InArgument<string> is a good option but then I end up with an UI that says "string" and accepts string when the value should be empty or integer.

Any ideas:

[Input("Some value")]
public InArgument<int> SomeValue { get; set; }

protected override void Execute(CodeActivityContext executionContext)
{

    if (SomeValue.Get(executionContext != null) {
        //always true since I get 0 even when the field is empty
    }

}

Thanks

CRM 2011: PrincipalEntityMap records missing for users created through SDK

$
0
0

We have created a bunch of users in CRM 2011 using the SDK.

Everything seems to work fine, until these users started to create their own User Dashboards.

The users could create their own User Dashboards. However, once they created them, they could not see them. They were not in their list of Dashboards - only the System Dashboards where there.

There were no errors in the event viewer or even the trace logs.

I used SQL Profiler to see what it was doing and I discovered it was checking the PrincipalEntityMap table for principals that had an objecttypecode of 1031 - which is the User Dashboard (called UserForm).

How do these records get created?

I can write a SQL script to populate the database with these missing records. What I would like to know is why they are missing? Any ideas?

For information - the following SQL is what CRM uses to retrieve the list of user dashboards. It is joining on PrincipalEntityMap. Where do the records for PrincipalEntityMap come from?

exec sp_executesql N'select
top 5001 "userform0".UserFormId as "userformid"
, "userform0".Name as "name"
, "userform0".Description as "description"
from
 UserFormBase as "userform0"
where
 (("userform0".Type = @Type0) and ("userform0".OwnerId in (select pem.PrincipalId from PrincipalEntityMap pem join SystemUserPrincipals sup on pem.PrincipalId = sup.PrincipalId where sup.SystemUserId = @UserIdOwnerCommand00 and pem.ObjectTypeCode = @OtcOwnerCommand00)
 or "userform0".UserFormId in (select ObjectId from fn_POARetrieveMultiple(@SystemUserId0, @ObjectTypeCode0)))) order by"userform0".Name asc
, "userform0".UserFormId asc',N'@Type0 int,@UserIdOwnerCommand00 uniqueidentifier,@OtcOwnerCommand00 int,@SystemUserId0 uniqueidentifier,@ObjectTypeCode0 int',@Type0=0,@UserIdOwnerCommand00='16A583B7-4E1D-E411-A0FA-00155D5D3B03',@OtcOwnerCommand00=1031,@SystemUserId0='16A583B7-4E1D-E411-A0FA-00155D5D3B03',@ObjectTypeCode0=1031
I have asked this on SO too - no luck - here is the link 



addCustomView in CRM 2013 lookup

$
0
0

I get an Savedquery With Id = 00000000-0000-0000-0000-000000000000 Does Not Exist message when I set up the custom view to a CRM 2013 Team lookup, whit this code, working in CRM 2011.

// Set the Owning Team View based on the account selected
function setOwningTeamView(entityFieldName, lookupFieldName, resetSelection) {
  // Get the selected entity
  var account = Xrm.Page.getAttribute(entityFieldName).getValue();

if (account != null) {
    var accid = account[0].id;
    var accname = account[0].name;

    if (resetSelection == true) {
        // reset old selection for Contact
        Xrm.Page.getAttribute(lookupFieldName).setValue(null);
    }

    // use randomly generated GUID Id for the view
    var viewId = "{0CBC820C-7033-4AFF-9CE8-FB610464DBD3}";
    var entityName = "team";

    // give the custom view a name
    var viewDisplayName = "Teams applicable to " + accname + "";

    var accountBU = SDK.REST.retrieveRecordSync(Xrm.Page.getAttribute("a_account").getValue()[0].id, "Account", "OwningBusinessUnit", "");
    var relatedBusinessUnits = SDK.REST.retrieveMultipleRecordsSync("BusinessUnit", "?$select=BusinessUnitId,Name&$filter=a_Type/Value eq 1");
    var FetchXMLBU = "";
    for (var i = 0; i < relatedBusinessUnits.results.length; i++) {
        FetchXMLBU += "<value>" + relatedBusinessUnits.results[i].BusinessUnitId + "</value>"
    }

    debugger;

    // find all contacts where parent customer is the account selected and where the Contact record is active
    var fetchXml = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>"+ "<entity name='team'>"+ "<attribute name='teamid' />"+ "<attribute name='name' />"+ "<attribute name='description' />"+ "<attribute name='businessunitid' />"+ "<filter>"+ "<condition attribute='businessunitid' operator='in'>"+ "<value>" + accountBU.OwningBusinessUnit.Id + "</value>"+ FetchXMLBU+ "</condition>"+ "</filter>"+ "</entity>"+ "</fetch>";

    // build Grid Layout
    var layoutXml = "<grid name='resultset' " +"object='1' " +"jump='teamid' " +"select='1' " +"icon='0' " +"preview='0'>" +"<row name='result' id='teamid'>" +"<cell name='name' width='200' />" +"<cell name='businessunitid' width='200' />" +"<cell name='description' width='400' />" +"</row>" +"</grid>";

    // add the Custom View to the indicated [lookupFieldName] Control
    Xrm.Page.getControl(lookupFieldName).addCustomView(viewId, entityName, viewDisplayName, fetchXml, layoutXml, true);
    //The following line is the an unsupported way of disabling the View Picker, currently there is no supported way.
    document.getElementById(lookupFieldName + "_i").setAttribute("disableViewPicker", "1");
    //document.getElementById(lookupFieldName).setAttribute("disableViewPicker", "1");
}
}

I'm also setting up a Customer lookup view with addCustomView with same code except for the calls to SDK and works well.

This is the fetchXMl generated:

"<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'><entity name='team'><attribute name='teamid' /><attribute name='name' /><attribute name='description' /><attribute name='businessunitid' /><filter><condition attribute='businessunitid' operator='in'>

<value>d2f2af7c-9c2e-e411-a53a-00155d5248a4</value><value>cff2af7c-9c2e-e411-a53a-00155d5248a4</value><value>d0f2af7c-9c2e-e411-a53a-00155d5248a4</value></condition></filter></entity></fetch>"


What can I change here to get this working?


Why is localContext.ServiceProvider null

$
0
0

I have created a plugin in 2011 using  the SDK Development Kit Plugin project and the CRM Package project to deploy the plugins.

The Plugin project, when one creates a plugin via the CRM Explorer, creates a class that inherits from Plugin.CS

In the class is a method created OOTB

protected void ExecuteMyPlugin(LocalPluginContext localContext)
But when I try to access localContext.ServiceProvider the ServiceProvider object is always null

Why is this?


Maz



Custom button returns error in CFO but works fine in Web client

$
0
0

Environment: MS-CRM 2013, UR2 on premisis; MS-Outlook 2010

We have some customer buttons, which works as intended in the Web client, but gives a syntax error in CFO (online as well as offline).

Example:
Ribbondiffxml:

<RibbonDiffXml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><CustomAction Id="hdm.account.ContactReport.Button.CustomAction" Location="Mscrm.Form.account.MainTab.Save.Controls._children" Sequence="41"><CommandUIDefinition><Button Alt="$LocLabels:hdm.account.ContactReport.Button.Alt" Command="hdm.account.NewContactReport.Command" Description="Create a new Contact Report" Id="hdm.account.ContactReport.Button" Image32by32="$webresource:IconHdm_tripreportLarge" Image16by16="$webresource:IconHdm_tripreportSmall" LabelText="$LocLabels:hdm.account.ContactReport.Button.LabelText" Sequence="41" TemplateAlias="o1" ToolTipTitle="$LocLabels:hdm.account.ContactReport.Button.ToolTipTitle" ToolTipDescription="$LocLabels:hdm.account.ContactReport.Button.ToolTipDescription" /></CommandUIDefinition></CustomAction><HideCustomAction HideActionId="hdm.Mscrm.Form.account.AddConnection.Hide" Location="Mscrm.Form.account.AddConnection" /><HideCustomAction HideActionId="hdm.Mscrm.SubGrid.account.AddNewStandard.Hide" Location="Mscrm.SubGrid.account.AddNewStandard" /></CustomActions><Templates><RibbonTemplates Id="Mscrm.Templates" /></Templates><CommandDefinition Id="hdm.account.NewContactReport.Command"><EnableRules /><DisplayRules><DisplayRule Id="hdm.account.CreateState.DisplayRule" /></DisplayRules><Actions><JavaScriptFunction FunctionName="HDM.Account.NewContactReportOnClick" Library="HDM.Account" /></Actions></CommandDefinition></CommandDefinitions><RuleDefinitions><TabDisplayRules /><DisplayRules></DisplayRules><EnableRules></EnableRules></RuleDefinitions><LocLabels><LocLabel Id="hdm.account.ContactReport.Button.Alt"><Titles><Title description="Contact Report" languagecode="1033" /></Titles></LocLabel><LocLabel Id="hdm.account.ContactReport.Button.LabelText"><Titles><Title description="New Contact Report" languagecode="1033" /></Titles></LocLabel><LocLabel Id="hdm.account.ContactReport.Button.ToolTipDescription"><Titles><Title description="Create a new Contact Report" languagecode="1033" /></Titles></LocLabel><LocLabel Id="hdm.account.ContactReport.Button.ToolTipTitle"><Titles><Title description="Contact Report" languagecode="1033" /></Titles></LocLabel></LocLabels></RibbonDiffXml>

JavaScript:

    NewContactReportOnClick: function () {
        var parameters = {};
        parameters["hdm_accountid"] = Xrm.Page.data.entity.getId();
        parameters["hdm_accountidname"] = Xrm.Page.getAttribute("name").getValue();
        Xrm.Utility.openEntityForm("hdm_tripreport", null, parameters);
    },

CFO error:

CFO Fidler:

When doing the same with the browser, the URL is different, also a http 404 error , but no error pop up:

404 HTTPS crmstg... /HDMMSCRM/HDM.Account

Any suggestions are appreciated.

Regards,
Per


Per

MS CRM 2011 Ribbon button Onclick event not firing

$
0
0

Hi,

I have a CRM2011 ribbon button which was created which was using XML file and ajax call .it(below function) creates button dynamically and add the button click event. The contained event  "onclick=window.execScript(action)"

is not working for Chrome and firefox.I tried "eval" but it was not working.

Please suggest the solution.

function AddButton(b_title, b_imgurl, appendSeparator, b_url){
     var menuItem = '<LI class="ms-cui-group" id=mnuCatalystSavo title=\"' + b_title + '\" onclick=window.execScript(action) tabIndex=-1 action=\"window.open(\'' + b_url + '\', \'\' , \'status=yes,toolbar=no,menubar=no,location=no,scrollbars=yes,resizable\');\"><SPAN class="ms-cui-groupContainer"><br/><A class="ms-cui-ctl-large " onclick=\"return false;\" tabIndex=-1 href=\"javascript:onclick();\" target=_self><IMG class=ms-crm-Menu-ButtonFirst tabIndex=-1 alt=\"' + b_title + '\" src=\"' + b_imgurl + '\"><SPAN class="ms-cui-ctl-largelabel" tabIndex=0></br>' + b_title + '</SPAN></A></SPAN></SPAN></LI>';

    if(appendSeparator == true)
        menuItem += '<LI class="ms-cui-group" tabIndex=-1><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN></LI>'

        return menuItem;
    }
Thanks


If you find this post helpful then please "Vote as Helpful" and "Mark As Answer". Thanks and Regards, Mohammad Yusuf Ansarihttp://microxrm.blogspot.in

Cannot get REST to work with JavaScript in CRM 2011

$
0
0

I'm having a lot of trouble trying to get this to work, having read the SDK etc.

I am basically trying to access the Organization Service by REST from within a form when something happens.

The URL for this service is http://myserverName/MyCrmName/XRMServices/2011/OrganizationData.svc/ (found by using Developer Resources and it resolves correctly)

In the form I have loaded SDK.REST.JS and JSON.JS from the SDK samples.

I ensure that in the SDK.REST library I have edited the getServerUrl() method to ensure it does not use the deprecated getServeUrl method but rather the getClientUrl method. Ultimately I am ensuring that this library sets up the web request with

/myserverName/MyCrmName/XRMServices/2011/OrganizationData.svc/ (if I include the "http//" I get an Access /Denied).

My code to call into the sdk.rest.retrieveMultipleRecords is

MyOrg.Cases.onRegardingFoiChanged = function () {
        SDK.REST.retrieveMultipleRecords("Account","$select=Name",
     function (results) {
         alert("success");
     },
     function (error){
         alert(error.message);
     },
     function () {
     //OnComplete handler
      }
   );

The code always errors with this message.

Error : 404: Not Found: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>IIS 8.0 Detailed Error - 404.0 - Not Found</title>

I am at a loss as to what the cause could be!

thanks.


Maz






MS CRM odata: Query in RelationshipQuery must be for related entity

$
0
0

I am using the odata api of Dynamics 2013 to retrieve some contacts from a list. This list has around 520 contacts in it.

My call looks like this:

.../ListSet?$select=listcontact_association&$expand=listaccount_association,listcontact_association&$filter=ListId " + filterString

This returns me the first 50 records plus a property called __next which contains a url to retrieve the next set of items.

But when I call the url of the next set which looks like:

/ListSet(guid'87f2a0af-a142-e411-93fa-000c29482c88')/listcontact_association?$skiptoken=1,%27contactid%27,%27%7BDE31A5CF-A042-E411-93FA-000C29482C88%7D%27,%27%7B79756A95-9E42-E411-93FA-000C29482C88%7D%27

I get a 500 response with:

{"error" : {"code" : "-2147220989","message" : {"lang" : "en-GB","value" : "Query in RelationshipQuery must be for related entity."
        }
    }
}

Any help is highly appreciated.

Is the CRM odata API a beta api or it's ready for prime time?







How to remove space between two bars in crm chart

$
0
0

Hi All;

In my below chart

i need to delete the space between two red bar is this possible any help much appreciated

below is the code

<Chart Palette="None" PaletteCustomColors="91,151,213; 237,125,49; 160,116,166; 255,192,0; 68,114,196; 112,173,71; 37,94,145; 158,72,14; 117,55,125; 153,115,0; 38,68,120; 67,104,43; 124,175,221; 241,151,90; 186,144,192; 255,205,51; 105,142,208; 140,193,104; 50,125,194; 210,96,18; 150,83,159; 204,154,0; 51,90,161; 90,138,57;"><Series><Series ChartType="Bar" IsValueShownAsLabel="False" Font="{0}, 9.5px" LabelForeColor="59, 59, 59" BackSecondaryColor="112, 142, 50" CustomProperties=" DrawSideBySide=False ,PointWidth=0.99, MaxPixelPointWidth=140" BackGradientStyle="TopBottom"><SmartLabelStyle Enabled="True" /></Series><Series ChartType="Bar" IsValueShownAsLabel="True" Font="{0}, 9.5px" LabelForeColor="59, 59, 59" CustomProperties="DrawSideBySide=False, PointWidth=0.75, MaxPixelPointWidth=40"><SmartLabelStyle Enabled="True" /></Series><Series ChartType="Bar" IsValueShownAsLabel="False" Font="{0}, 9.5px" LabelForeColor="59, 59, 59" CustomProperties="PointWidth=0.75, MaxPixelPointWidth=40"><SmartLabelStyle Enabled="True" /></Series><Series ChartType="Bar" IsValueShownAsLabel="False" Font="{0}, 9.5px" LabelForeColor="59, 59, 59" CustomProperties="PointWidth=0.75, MaxPixelPointWidth=40"><SmartLabelStyle Enabled="True" /></Series><Series ChartType="Bar" IsValueShownAsLabel="False" Color="red"  CustomProperties=" DrawSideBySide=false ,PointWidth=3.99, MaxPixelPointWidth=240"><SmartLabelStyle Enabled="True" /></Series></Series>

Thanks


Pradnya07

Viewing all 465 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>