RadGrid for ASP.NET AJAX

RadControls for ASP.NET AJAX

The key to the advanced data binding of a RadGrid control is handling the NeedDataSource event. RadGrid fires the NeedDataSource event each time it needs to be bound to a data source. If, at the time of the event, the DataSource property is not set to a valid data source object, the grid will not behave correctly.

This event fires in the following cases:

  • Immediately after On_Load if the grid has not yet been data-bound and there is no ViewState data. This means that if MasterTableView.EnableViewState has been set to false, grid will bind each time the page loads, not only the first time.

  • When a paging operation occurs.

  • When a sorting operation occurs.

  • When an edit command is fired.

  • Immediately after any Update, Delete, or Insert command event handlers finish execution. You can cancel these operations by handling ItemCommand event and assigning false to the e event argument's Canceled property.

  • When grouping or ungrouping, immediately after the GroupsChanging event occurs.

  • When filtering (choosing an option from a column filter menu).

  • When re-sorting a group.

  • When a call to the grid's Rebind method takes place.

  • Prior to binding any detail table.

  • In some other custom cases.

Note

The event arguments for the NeedDataSource event include RebindReason property, which indicates the reason the event is occurring.

The advantage of using the NeedDataSource event is that you have the flexibility of generating your data source in the code-behind, but are freed from handling the logic of when and how data-binding should take place. It is still your responsibility to properly construct a data source object and assign it to the grid's DataSource property.

Caution

Important: You should never call the Rebind() method in a NeedDataSource event handler.You should never call DataBind() as well when using advanced data-binding through NeedDataSource. For MS GridView-like data-binding see Simple Data-binding.

RadGrid does not fire the NeedDataSource event unless it is visible (Visible=True).

In a NeedDataSource event handler, you should prepare the data source (list of objects) for RadGrid and assign it to the grid's DataSource property: