Click here to Skip to main content
6,595,444 members and growing! (20,572 online)
Email Password   helpLost your password?
Languages » C# » General     Intermediate License: The Microsoft Public License (Ms-PL)

Access a Web page in Dynamics CRM with JavaScript Code

By brsk

In this article, I will show you how to access a Web page with JavaScript code in Microsoft Dynamics CRM. You can process CRM entities or different actions in that page
C#, JavascriptWin2003, Vista, ASP.NET, IIS 6, IIS 7
Posted:30 Dec 2007
Updated:21 Mar 2008
Views:10,945
Bookmarked:12 times
Announcements
Loading...
 
Search    
Advanced Search
Add to IE Search
printPrint   add Share
      Discuss Discuss   Broken Article?Report  
2 votes for this article.
Popularity: 1.10 Rating: 3.67 out of 5

1

2
1 vote, 50.0%
3

4
1 vote, 50.0%
5

Introduction

In this article, I will show you how to access a Web page with JavaScript code in Microsoft Dynamics CRM. You can process CRM entities or perform different actions on that page.

In sample JavaScript code; we will take Guid of a Product and we will pass this Guid to /QuoteCalcs/Calcs.aspx page. This page will process something and will return a result in <baris> XML tags. If the result is null or false JavaScript code will show an error alert to the user.

If you want to cancel the save process of CRM after this error, you must add the following code block after the error code:

event.returnValue = false;

If there is a value in the object, pass an area for showing to the user.
You will find the C# code after JavaScript code.

Using the JavaScript Code

This code will show you how to access a Web page with JavaScript (I will continue the article in the JavaScript code):

var oProduct = document.crmForm.all.productid; 
// we passed the Lookup object for access to Guid
var aProduct = new Array(); 
//The lookup is an array on CRM Form. So we must access 
//this objects of array with an array object.
aProduct = oProduct .DataValue; 
//Yeah, we found the Guid of Product
var sProductID = aProduct [0].id;sProductID = encodeURIComponent(sProductID);
if (sProductID!=null)
{
    //We create an Microsoft.XMLDOM object
    var oXmlDoc = new ActiveXObject('Microsoft.XMLDOM');
    oXmlDoc.async = false; // we don't want asenkron code process
    var path = '/QuoteCalcs/Calcs.aspx?productid=' + sProductID ;
    //we passed the path of our web page to XMLDOM object
    oXmlDoc.load(path);
    //we look for <baris> xml tag - Baris is my name:-) 
    var oNode = oXmlDoc.selectSingleNode('baris'); 
    if (oNode != null && oNode.text == 'false')
    {
        alert('an error');
    }
    if (oNode != null && oNode.text != 'false')
    { 
        //we set value to price area in CRM Form
        crmForm.all.price.value = oNode.text;
    }
}

Using the C# Script Code

The real process will run on this ASPX page. We takes the parameters that are passed from our JavaScript code. We are looking for parameters that are empty. Later, we access the CRM Web Services with default credentials. If you aren't in the same domain with Microsoft Dynamics CRM you didn't access CRM Web Service with default credentials, so you must access Web Services with a username and password. We will send a query like...

select * from filteredproduct where productid=ProductId

... while using Web services. The response from Web services is a BussinessEntityCollection that is the basis of all entities in Microsoft Dynamics CRM. We convert the BussinessEntityCollection class to a product class and we find the value that we want and we return this value in the <baris> XML tag:

<%@ Page Language="'c#'%">
<%@ Import Namespace='CrmSdk' %>
<script runat="'server'">
protected override void Render(HtmlTextWriter writer) 
{
    Response.Clear();
    Response.ContentType = 'text/xml';
    string ProductID = Request.QueryString['ProductID'];
    string TYPE = Request.QueryString['Type'];
    if (ProductID != null &&
    ProductID !='null')
    {
        CrmService service = new CrmService();
        service.Credentials = System.Net.CredentialCache.DefaultCredentials;
        QueryByAttribute attributeQuery = new QueryByAttribute(); 
        attributeQuery.ColumnSet = new AllColumns();
        attributeQuery.Attributes = new string [] {'productid'};
        attributeQuery.Values = new string [] {ProductID};
        attributeQuery.EntityName = EntityName.product.ToString();
        RetrieveMultipleRequest retrieve = new RetrieveMultipleRequest();
        retrieve.Query = attributeQuery;
        RetrieveMultipleResponse retrieved = 
		(RetrieveMultipleResponse)service.Execute(retrieve);
        if (retrieved.BusinessEntityCollection.BusinessEntities.Length > 0)
        {
            product prd = (product)
			retrieved.BusinessEntityCollection.BusinessEntities[0];
            if (prd.price!=null)
            {
                Response.Write('<baris>'+prd.price.Value.ToString()+'</baris>');
            }
            else
            {
                Response.Write('<baris>false</baris>');
            } 
        }
        else
        {
            Response.Write('<baris>false</baris>');
        }
    }
} 
</script>

In all of this process, we have a JavaScript and a C# script code. In C# script code we import the CrmSdk DLL to the page with the import method. You can make your CrmSdk (Microsoft.Crm.Sdk.Wsdl.dll) DLL. Below, you can find how to make your CrmSdk DLL. In all of those processes, we must put our code to a server and we must create a virtual directory in CRM Web Site in IIS.

Creating a DLL for the Microsoft CRM Web Service

When developing your solution, you first need to generate a WSDL that will provide you with all the classes and methods in Microsoft CRM 3.0. You should always start with a clean installation of Microsoft CRM 3.0, one that has had no customizations made. This way your code will not rely on information not found on a customer installation.

The steps below demonstrate how to generate this reference file for the SDK. You can use the same procedure to generate a reference file for the metadata Web service.

  1. Click Start, point to All Programs, point to Microsoft Visual Studio .NET 2003, point to Visual Studio .NET Tools, and then click Visual Studio .NET 2003 Command Prompt.

  2. At the command prompt, create the reference file, Microsoft.Crm.Sdk.Wsdl.cs, by typing the following command, using the URL of your server running Microsoft CRM:

    wsdl.exe /out: Microsoft.Crm.Sdk.Wsdl.cs 
        /namespace:CrmSdk http://<yourserver>/mscrmservices/2006/crmservice.asmx
  3. Generate a WSDL DLL that will be packaged with your solution using the reference created in step 2 using this command:

    csc /t:library Microsoft.Crm.Sdk.Wsdl.cs

This DLL can now be packaged with your add-on.

Baris KANLICA
Software Specialist
brsk@e-kolay.net
www.cub-e.net

forum.cub-e.net

License

This article, along with any associated source code and files, is licensed under The Microsoft Public License (Ms-PL)

About the Author

brsk


Member
Currently, I work as a Software Departman Manager in OMERD Business Solutions and I am developing projects on Microsoft Dynamics CRM.

Besides making consultancy to companies, I make trainings based on C# and ASP.Net on CRM Projects, Windows Forums, Web and Windows services.

The result of work done in the CRM space Microsoft given to me the title of MVP and award.
Occupation: Software Developer (Senior)
Company: Omerd Business Solutions
Location: Turkey Turkey

Other popular C# articles:

Article Top
You must Sign In to use this message board.
FAQ FAQ 
 
Layout  Per page   
 Msgs 1 to 1 of 1 (Total in Forum: 1) (Refresh)FirstPrevNext
GeneralOpenSource CRM & ERP : http://www.codeplex.com/workflowmagic Pinmemberworkf5:34 16 Oct '08  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

PermaLink | Privacy | Terms of Use
Last Updated: 21 Mar 2008
Editor: Deeksha Shenoy
Copyright 2007 by brsk
Everything else Copyright © CodeProject, 1999-2009
Web13 | Advertise on the Code Project