Accessing ASPxGridView's Serverside Properties From ClientSide

14 January 2008

Last month, I was creating a sample with the ASPxGridView when I needed to access the PageIndex property from the client side. The PageIndex property holds the current page index number. I needed to use the PageIndex for a client side function. Unfortunately, this property was only available on the server side. I used my keen insight to come up with the perfect suggestion to enhance the product: Just open up a bunch of server properties on the client side! Luckily, someone smarter than me (Andrew the ASPxGridView Architect) saw what a horrible idea that really was and came up with this enhancement that works better and does more...

A new method allows you to expose almost any server side property to the client side. Using an ingenious technique which creates temporary client properties so that the client side is not weighed down with extra HTML or JavaScript if it's not needed.

The CustomJSProperties event enables you to declare temporary client properties. Once declared, these properties can be accessed from the client side. To add a new property, use the event parameter's http://documentation.devexpress.com/#AspNet/clsDevExpressWebASPxGridViewASPxGridViewClientJSPropertiesEventArgstopic property (this represents a collection of property names and their values).

For example, to expose the PageIndex property, first override the CustomJSProperties event and add your custom property to expose to the client side: 

protected void ASPxGridView1_CustomJSProperties(object sender, 
   DevExpress.Web.ASPxGridView.ASPxGridViewClientJSPropertiesEventArgs e) 
{
   e.Properties["cpPageIndex"] = ASPxGridView1.PageIndex;
}

That's it, your done. Now you're free to call this property from the client side:

<input id="Button2" type="button" value="Active Page" 
   onclick="alert(grid.cpPageIndex)" />

To avoid rewriting the ASPxGridView’s base properties, prefix the client side property name with "cp" for custom property (e.g. cpPageIndex).

Here is a sample project that shows how it’s done: [CustomJSProperties.zip]

Thanks.

15 comment(s)
Shankar

A great Idea which would avoid a postback! as well create an interactive experience for the user.

15 January, 2008
Crono

This is indeed a great idea. The best of two worlds, client and server.

Congratulations on that one, it scores big time.

15 January, 2008
George Cox

Can this be applied to the other ASPx controls?

15 January, 2008
RAUL TORTIMA

Great idea for sure!

I would go further and suggest to develop a component that embraces this functionality.

Take a look at:

www.csharper.net/.../adding_a_control_hook__or_client_side_reference_to_a_control_in_asp_net_.aspx

17 January, 2008
Mehul Harry (DevExpress)

Thanks Guys, it is a cool feature.

George, not currently but I'll discuss it with the team.

Raul, Thanks, I'll check it out.

18 January, 2008
Kevin Attard

wow, really neat idea :)

11 February, 2008
Gustavo

I dont have the  ASPxGridViewClientJSPropertiesEventArgs property, I am using 2007 is it for the version??

Regards

6 April, 2008
Mehul Harry (DevExpress)

Hello Gustavo,

This property is supported in version 2007 vol 3 and newer versions.

Thanks.

6 April, 2008
Shalini Kondapalli

That's very handy.  Thanks a lot.

7 May, 2008
Nitin Nikam

By doing this, I only get value at client side, But

How do I set page Index of grid at client side?

20 May, 2008
Mehul Harry (DevExpress)

Hello Nitin,

Can you describe your goal in setting the pageindex on the clientside? We need to know the aim in order to answer this question.

Thanks.

20 May, 2008
Mourad

I get always the same value of PageIndex (zero), the value changed on server but not on client side.

4 August, 2008
Mehul Harry (DevExpress)

Hello Mourad,

I updated the post and added a sample project. Give that a try and see if it helps you:

community.devexpress.com/.../CustomJSProperties.zip

4 August, 2008
Raymond Kirk

I was just thinking about Properties From ClientSide  and you've really helped out. Thanks!

17 January, 2009
sunil

Yes its great deal.................

30 July, 2009

Please login or register to post comments.