Thanks Doncho... #2 seemed to be the key to get the server-side function called. #3 got the data back correctly, and #1 got the grid to display.
For people who may be in a similar situation, here is a working example, which also uses a custom parameter to populate the grid.
I haven't played around with passing data for CRUD operations, but I imagine the process would be similar
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" %>
<
head
runat
=
"server"
>
<
title
></
title
>
<
telerik:RadStyleSheetManager
ID
=
"RadStyleSheetManager1"
runat
=
"server"
/>
<
telerik:RadCodeBlock
runat
=
"server"
ID
=
"RadCodeBlock_Default"
>
<
script
language
=
"javascript"
type
=
"text/javascript"
>
function parameterMap(sender, args) {
if (args.get_type() == "read" && args.get_data()) {
var start = $find("<%= RadNumericTextBox1.ClientID %>").get_value();
var jsonData = { 'start': start };
args.set_parameterFormat(kendo.stringify(jsonData));
}
}
function RadNumericTextBox1_ValueChanged(sender, eventArgs) {
$find("<%= RadGrid1.ClientID %>").get_masterTableView().rebind();
}
</
script
>
</
telerik:RadCodeBlock
>
</
head
>
<
body
>
<
form
id
=
"form1"
runat
=
"server"
>
<
telerik:RadNumericTextBox
runat
=
"server"
ID
=
"RadNumericTextBox1"
Value
=
"0"
DisplayText
=
"0"
>
<
ClientEvents
OnValueChanged
=
"RadNumericTextBox1_ValueChanged"
></
ClientEvents
>
</
telerik:RadNumericTextBox
>
<
telerik:RadScriptManager
ID
=
"RadScriptManager1"
runat
=
"server"
EnablePageMethods
=
"True"
>
<
Scripts
>
<
asp:ScriptReference
Assembly
=
"Telerik.Web.UI"
Name
=
"Telerik.Web.UI.Common.Core.js"
/>
<
asp:ScriptReference
Assembly
=
"Telerik.Web.UI"
Name
=
"Telerik.Web.UI.Common.jQuery.js"
/>
<
asp:ScriptReference
Assembly
=
"Telerik.Web.UI"
Name
=
"Telerik.Web.UI.Common.jQueryInclude.js"
/>
</
Scripts
>
</
telerik:RadScriptManager
>
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
/>
<
div
>
<
telerik:RadGrid
runat
=
"server"
ID
=
"RadGrid1"
ClientDataSourceID
=
"RadClientDataSource1"
>
<
MasterTableView
AutoGenerateColumns
=
"False"
>
<
PagerStyle
Mode
=
"NextPrevNumericAndAdvanced"
></
PagerStyle
>
<
CommandItemSettings
/>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"id"
UniqueName
=
"ID"
/>
<
telerik:GridBoundColumn
DataField
=
"name"
UniqueName
=
"Name"
/>
<
telerik:GridBoundColumn
DataField
=
"description"
UniqueName
=
"Description"
/>
</
Columns
>
</
MasterTableView
>
<
ClientSettings
>
<
ClientEvents
></
ClientEvents
>
</
ClientSettings
>
</
telerik:RadGrid
>
<
telerik:RadClientDataSource
ID
=
"RadClientDataSource1"
runat
=
"server"
>
<
ClientEvents
OnCustomParameter
=
"parameterMap"
/>
<
DataSource
>
<
WebServiceDataSourceSettings
BaseUrl
=
"Default.aspx/"
>
<
Select
Url
=
"GetItems"
DataType
=
"JSON"
ContentType
=
"application/json; charset=utf-8"
RequestType
=
"Post"
></
Select
>
</
WebServiceDataSourceSettings
>
</
DataSource
>
<
Schema
DataName
=
"d"
>
<
Model
ID
=
"id"
>
<
telerik:ClientDataSourceModelField
FieldName
=
"id"
DataType
=
"Number"
/>
<
telerik:ClientDataSourceModelField
FieldName
=
"name"
DataType
=
"String"
/>
<
telerik:ClientDataSourceModelField
FieldName
=
"description"
DataType
=
"String"
/>
</
Model
>
</
Schema
>
</
telerik:RadClientDataSource
>
</
div
>
</
form
>
</
body
>
</
html
>
using System;
using System.Collections.Generic;
using System.Web.Services;
using System.Web.Script.Services;
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public class Item
{
public Int32 id { get; set; }
public String name { get; set; }
public String description { get; set; }
}
[WebMethod]
[ScriptMethod]
public static List<
Item
> GetItems(Int32 start)
{
List<
Item
> results = new List<
Item
>();
for (Int32 idx = start; idx < start+100; idx++)
{
results.Add(new Item() {id = idx, name = "Name " + idx, description = "Description " + idx});
}
return results;
}
}