RadGrid for ASP.NET AJAX supports client-side binding to web services or page methods as demonstrated in this online demo of the product. In order to assign data source for the grid and refresh its state on the client, utilize the set_dataSource(dataSource) and dataBind() methods from its client-side API. Keep in mind that the data source passed as an argument to the set_dataSource method should have JSON signature which can be serialized by a web service or a page method.

The example illustrates how to:

Extract information about the selected data item on the client

Insert/ update/delete grid records client-side using external form

Bind the grid on the client

The source for the grid is generated via web service (MyWebService.asmx).

Public Class EmployeesList
Inherits List(Of Employee)
Public Sub New()
LoadAllEmployees()
End Sub
Private Sub LoadAllEmployees()
If Me.Count > 0 Then
Me.Clear()
End If
Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("NorthwindConnectionString").ConnectionString)
Dim cmd As New SqlCommand("SELECT [EmployeeID], [LastName], [FirstName], [Title], [TitleOfCourtesy], [BirthDate], [Notes] FROM [Employees]", conn)
cmd.CommandType = CommandType.Text
Try
conn.Open()
Dim dr As SqlDataReader = cmd.ExecuteReader()
While dr.Read()
Me.Add(New Employee(dr))
End While
Finally
conn.Close()
End Try
End Sub
Public Function GetEmployeeByEmployeeID(ByVal id As Integer) As Employee
For Each employee As Employee In Me
If employee.EmployeeID = id Then
Return employee
End If
Next
Return Nothing
End Function
End Class

Public Class Employee
Private _EmployeeID As Integer
Private _LastName As String
Private _FirstName As String
Private _Title As String
Private _TitleOfCourtesy As String
Private _BirthDate As System.Nullable(Of Date)
Private _Notes As String
Public Sub New()
End Sub
Public Sub New(ByVal reader As SqlDataReader)
_EmployeeID = Convert.ToInt32(reader("EmployeeID"))
_LastName = reader("LastName").ToString()
_FirstName = reader("FirstName").ToString()
_Title = reader("Title").ToString()
_TitleOfCourtesy = reader("TitleOfCourtesy").ToString()
_BirthDate = Convert.ToDateTime(reader("BirthDate"))
_Notes = reader("Notes").ToString()
End Sub
Public Property EmployeeID() As Integer
Get
Return Me._EmployeeID
End Get
Set(ByVal value As Integer)
If (Me._EmployeeID <> value) Then
Me._EmployeeID = value
End If
End Set
End Property
Public Property LastName() As String
Get
Return Me._LastName
End Get
Set(ByVal value As String)
If (Me._LastName <> value) Then
Me._LastName = value
End If
End Set
End Property
Public Property FirstName() As String
Get
Return Me._FirstName
End Get
Set(ByVal value As String)
If (Me._FirstName <> value) Then
Me._FirstName = value
End If
End Set
End Property
Public Property Title() As String
Get
Return Me._Title
End Get
Set(ByVal value As String)
If (Me._Title <> value) Then
Me._Title = value
End If
End Set
End Property
Public Property TitleOfCourtesy() As String
Get
Return Me._TitleOfCourtesy
End Get
Set(ByVal value As String)
If (Me._TitleOfCourtesy <> value) Then
Me._TitleOfCourtesy = value
End If
End Set
End Property
Public Property BirthDate() As System.Nullable(Of Date)
Get
Return Me._BirthDate
End Get
Set(ByVal value As System.Nullable(Of Date))
If (Me._BirthDate <> value) Then
Me._BirthDate = value
End If
End Set
End Property
Public Property Notes() As String
Get
Return Me._Notes
End Get
Set(ByVal value As String)
If (Me._Notes <> value) Then
Me._Notes = value
End If
End Set
End Property
End Class