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;
var aProduct = new Array();
aProduct = oProduct .DataValue;
var sProductID = aProduct [0].id;sProductID = encodeURIComponent(sProductID);
if (sProductID!=null)
{
var oXmlDoc = new ActiveXObject('Microsoft.XMLDOM');
oXmlDoc.async = false;
var path = '/QuoteCalcs/Calcs.aspx?productid=' + sProductID ;
oXmlDoc.load(path);
var oNode = oXmlDoc.selectSingleNode('baris');
if (oNode != null && oNode.text == 'false')
{
alert('an error');
}
if (oNode != null && oNode.text != 'false')
{
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 =
string ProductID = Request.QueryString[
string TYPE = Request.QueryString[
if (ProductID != null &&
ProductID !=
{
CrmService service = new CrmService();
service.Credentials = System.Net.CredentialCache.DefaultCredentials;
QueryByAttribute attributeQuery = new QueryByAttribute();
attributeQuery.ColumnSet = new AllColumns();
attributeQuery.Attributes = new string [] {
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(
}
else
{
Response.Write(
}
}
else
{
Response.Write(
}
}
}
</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.
-
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.
-
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:
-
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