SalesLogix web client: Adding validation logic client side to a button click

I recently had a request where I needed a button to perform some validations and then launch a SalesLogix report using the client side report library in the SalesLogix web client.  I thought I would show you how I did it.

My solution was done to a quickform so I was limited in what actions I had available.  What I ended up doing was loading hidden fields and then reading those fields client side.  I placed all of my code on the Page Load event like so:

Sage.Entity.Interfaces.IAccount account = this.BindingSource.Current as Sage.Entity.Interfaces.IAccount;

if (account.UserField7 != null)
{
    Contract.Value = account.UserField7;
    Sage.Entity.Interfaces.IContract contract = Sage.Platform.EntityFactory.GetById<Sage.Entity.Interfaces.IContract>(account.UserField7);
    if (contract != null && contract.CContract != null)
    {
        ContractDate.Value = contract.CContract.TerminationDate.ToString();
    }
}

string script = “function FXCheckReport() {“;
script += ” var contract = document.getElementById(‘” + Contract.ClientID + “‘);”;
script += ” if (contract!=null) var cid = contract.value;”;
script += ” var contractdate = document.getElementById(‘” + ContractDate.ClientID + “‘);”;
script += ” if(contractdate!=null) var cdate = contractdate.value;”;
script += ” var currentdate = ‘” + System.DateTime.Now + “‘;”;
script += ” if (!cid || cid==”) {“;
script += ” confirm(‘No contract specified for this account’); return false; }”;
script += ” else if (!cdate|| new Date(cdate) <= new Date(currentdate)) {“;
script += ” confirm(‘Contract has been terminated for this account’); return false; }”;
script += ” else { ShowReportByName(‘Personal:My Report’); return false;} } “;

ScriptManager.RegisterStartupScript(Page, GetType(), “FXCheckReport”, script, true);

 

The first part of my code retrieves data from the currently bound entity and places them in hidden fields.  The second part then constructs a java script function called FXCheckReport.  This function examines the hidden fields and then based on the examination then shows various messages or if validations pass, it runs the report I want.

On my button client click action I then just called my injected function like so:

return FXCheckReport();

This is a pretty simple solution really.  You could even remove the hidden fields and just inject your values right into the java script code that is constructed, if you wanted to.  I thought this solution shows a little bit more though since you can see how to retrieve server bound controls client side.

ABOUT THE AUTHOR

Kris Halsrud

Kris Halsrud is a Senior Analyst / Developer for Customer FX Corporation.

Submit a Comment

Your email address will not be published. Required fields are marked *

Subscribe To Our Newsletter

Join our mailing list to receive the latest Infor CRM (Saleslogix) news and product updates!

You have Successfully Subscribed!