or
Hello.
In order to familiarize with the RadGrid component, I have created a small application whose grid is populated by a web service.
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
runat
=
"server"
>
<
title
></
title
>
</
head
>
<
body
>
<
form
id
=
"form1"
runat
=
"server"
>
<
telerik:RadScriptManager
ID
=
"RadScriptManager1"
runat
=
"server"
>
</
telerik:RadScriptManager
>
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
>
<
MasterTableView
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"ID"
HeaderText
=
"ID"
DataType
=
"System.Int32"
/>
<
telerik:GridBoundColumn
DataField
=
"Name"
HeaderText
=
"Name"
DataType
=
"System.String"
/>
</
Columns
>
</
MasterTableView
>
<
ClientSettings
>
<
DataBinding
Location
=
"WebService.cs"
SelectMethod
=
"RetrieveRows"
/>
</
ClientSettings
>
</
telerik:RadGrid
>
</
form
>
</
body
>
</
html
>
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.ServiceModel;
using
Telerik.Web.UI;
namespace
WebApplication1
{
[ServiceContract(Namespace =
""
)]
[System.Web.Script.Services.ScriptService]
public
class
WebService
{
public
WebService ()
{
}
[OperationContract]
public
Dictionary<
string
,
object
> RetrieveRows(
int
startRowIndex,
int
maximumRows, List<GridSortExpression> sortExpression, List<GridFilterExpression> filterExpression)
{
Dictionary<
string
,
object
> dictionary =
new
Dictionary<
string
,
object
>();
dictionary.Add(
"Data"
,
new
[] {
new
{ ID = 1234, Name =
"Test"
}});
dictionary.Add(
"Count"
, 1);
return
dictionary;
}
}
}
The compilation was successful, but the following error message was displayed at runtime by the built-in script debugger of Internet Explorer:
Line: 6563
Error: Sys.ArgumentException: Cannot deserialize empty string.
Parameter name: data
I would appreciate whether some assistance could be provided to solve this problem.
Last but not least:
a) I was wondering how the application could be implemented using a server-side binding solution.
b) What is Telerik's recommendation in regard to client versus server-side binding implementations using a web service?
Thank you in advance.
Paulo
<
telerik:RadGrid
ID
=
"testEdit"
AllowMultiRowEdit
=
"True"
ShowFooter
=
"false"
ShowStatusBar
=
"true"
runat
=
"server"
ShowHeader
=
"false"
AutoGenerateColumns
=
"true"
>
<
MasterTableView
CommandItemDisplay
=
"Top"
InsertItemPageIndexAction
=
"ShowItemOnCurrentPage"
>
<
CommandItemSettings
ShowRefreshButton
=
"false"
AddNewRecordText
=
"Add User & Employee"
/>
<!--numeric filter box -->
<
TD
style
=
"WHITE-SPACE: nowrap"
>
<
SPAN
style
=
"WHITE-SPACE: nowrap"
id
=
tabs_tabExportDetail_rgExportDetail_ctl00_ctl02_ctl03_RNTBF_LineNum_wrapper
class
=
"RadInput RadInput_IP"
>
<
INPUT
style
=
"WIDTH: 125px"
id
=
tabs_tabExportDetail_rgExportDetail_ctl00_ctl02_ctl03_RNTBF_LineNum_text
class
=
"riTextBox riEnabled"
onkeypress
=
"if((event.keyCode == 13 || event.keyCode == 20)){event.returnValue=false; return false;}"
alt
=
"Filter LineNum column"
type
=
text
name
=
tabs_tabExportDetail_rgExportDetail_ctl00_ctl02_ctl03_RNTBF_LineNum_text
>
<
INPUT
style
=
"BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: -18px 0px 0px -1px; PADDING-LEFT: 0px; WIDTH: 1px; PADDING-RIGHT: 0px; HEIGHT: 1px; VISIBILITY: hidden; OVERFLOW: hidden; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px"
id
=
tabs_tabExportDetail_rgExportDetail_ctl00_ctl02_ctl03_RNTBF_LineNum
class
=
rdfd_
title
=
""
type
=
text
>
<
INPUT
style
=
"BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: -18px 0px 0px -1px; PADDING-LEFT: 0px; WIDTH: 1px; PADDING-RIGHT: 0px; HEIGHT: 1px; VISIBILITY: hidden; OVERFLOW: hidden; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px"
id
=
tabs_tabExportDetail_rgExportDetail_ctl00_ctl02_ctl03_RNTBF_LineNum_Value
class
=
rdfd_
title
=
""
type
=
text
name
=
tabs
$tabExportDetail$rgExportDetail$ctl00$ctl02$ctl03$RNTBF_LineNum>
<
INPUT
id
=
tabs_tabExportDetail_rgExportDetail_ctl00_ctl02_ctl03_RNTBF_LineNum_ClientState
type
=
hidden
name
=
tabs_tabExportDetail_rgExportDetail_ctl00_ctl02_ctl03_RNTBF_LineNum_ClientState
autocomplete
=
"off"
>
</
LINK
>
</
SPAN
>
<
INPUT
id
=
tabs_tabExportDetail_rgExportDetail_ctl00_ctl02_ctl03_Filter_LineNum
class
=
rgFilter
title
=
Filter
onclick
=
'$find("tabs_tabExportDetail_rgExportDetail")._showFilterMenu("tabs_tabExportDetail_rgExportDetail_ctl00", "LineNum", event); return false;'
type
=
submit
name
=
tabs
$tabExportDetail$rgExportDetail$ctl00$ctl02$ctl03$Filter_LineNum>
</
TD
>
<
TD
style
=
"WHITE-SPACE: nowrap"
>
<
INPUT
id
=
tabs_tabExportDetail_rgExportDetail_ctl00_ctl02_ctl03_FilterTextBox_ProductNum
class
=
rgFilterBox
onkeypress
=
"if((event.keyCode == 13 || event.keyCode == 20)) return false;"
alt
=
"Filter ProductNum column"
size
=
10
type
=
text
name
=
tabs
$tabExportDetail$rgExportDetail$ctl00$ctl02$ctl03$FilterTextBox_ProductNum>
<
INPUT
id
=
tabs_tabExportDetail_rgExportDetail_ctl00_ctl02_ctl03_Filter_ProductNum
class
=
rgFilter
title
=
Filter
onclick
=
'$find("tabs_tabExportDetail_rgExportDetail")._showFilterMenu("tabs_tabExportDetail_rgExportDetail_ctl00", "ProductNum", event); return false;'
value
=
" "
type
=
submit
name
=
tabs
$tabExportDetail$rgExportDetail$ctl00$ctl02$ctl03$Filter_ProductNum>
</
TD
>