Posting changes from a Telerik RadGrid row edit back to a bound SalesLogix entity

More on the Telerik RadControls for ASP.Net AJAX- they really really rock

The more I work with them the more I really love them.  Thanks to some feedback from their support department I have figured out how to perform an automatic update of whatever fields changed when editing a RadGrid’s data row back to the SalesLogix entity on which they are bound.  I will be posting a lot more on specifics about how to bind SalesLogix entities to these controls, how to do CRUD operations, etc.

Today I want to focus on how to perform an update on a RadGrid’s row edit event to update the bound SalesLogix entity.

First you need to get a reference to the Telerik.Web.UI.GridEditableItem of the passed in Telerik.Web.UI.GridCommandEventArgs from the RadGrid’s update command like so:

 

Telerik.Web.UI.GridEditableItemeditableItem  editableItem= ((Telerik.Web.UI.GridEditableItem)e.Item);

Next, using this object, you can fetch the primary Id of the edit row (assuming that you have bound the Id as the primary key of the row):

string rowId = editableItem.OwnerTableView.DataKeyValues[editableItem.ItemIndex][“Id”].ToString()

 

With the row ID fetched, we can now instantiate a reference to the underlying object like:

 

Sage.Entity.Interfaces.IAccount account = Sage.Platform.EntityFactory.GetById<Sage.Entity.Interfaces.IAccount>(rowId);

Then we make sure we actually have a valid record:

if (account != null){}

 

 

Finally inside this if block we add the simple, elegant, and totally awsome single line of code to take the RadGrid row’s edited properties and update our referenced entity with them:

editableItem.UpdateValues(account);

 

And last we call the Save event to post our entity changes back to the database:

account.Save();

And in total here is the code:

Telerik.Web.UI.GridEditableItemeditableItem  editableItem= ((Telerik.Web.UI.GridEditableItem)e.Item);
string rowId = editableItem.OwnerTableView.DataKeyValues[editableItem.ItemIndex][“Id”].ToString()
Sage.Entity.Interfaces.IAccount account = Sage.Platform.EntityFactory.GetById<Sage.Entity.Interfaces.IAccount>(rowId);
if (account != null)
{
    editableItem.UpdateValues(account);
    account.Save();
}

 

How totally cool is that!?

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) and Creatio (bpm'online) news and product updates!

You have Successfully Subscribed!