Hi,
I have a RadGrid bound to WebAPI through RadClientDataSource. Grid is configured to fire the OnRowDataBound event on the client side. Pagination is set to TRUE and is configured to show 10 rows per page. The service returns 6 rows which bind the grid and on each row I bind a combobox inside that row with static data. (RadComboBox template column)
Issue - I presume the OnRowDataBound event must fire 6 times i.e. exactly equal to the number of rows bound to the grid, however its fired more than 6 times and hence the same dropdowns are appended with the data for all the extra times the rowbound event is called. I have to manually clear the items from the combo as a work-around.
This does not happen If I turn OFF pagination.
What am I missing here?
JavaScript - OnRowDataBound event
01.
<telerik:RadCodeBlock runat=
"server"
ID=
"RadCodeBlock1"
>
02.
<script>
03.
function
RowDataBound(sender, args) {
04.
var
cmbOType = args.get_item().findControl(
"cmbOpportunityType"
);
05.
Populate(cmbOType);
06.
};
07.
08.
function
Populate(cmb) {
09.
cmb.clearItems();
10.
var
otype = [
11.
{ Value:
"1"
, Text:
"AMAR"
},
12.
{ Value:
"2"
, Text:
"VDB"
},
13.
{ Value:
"3"
, Text:
"MLS"
}];
14.
15.
for
(
var
i = 0; i < otype.length; i++) {
16.
var
cmbItem =
new
Telerik.Web.UI.RadComboBoxItem();
17.
cmbItem.set_value(otype[i].Value);
18.
cmbItem.set_text(otype[i].Text);
19.
cmb.get_items().add(cmbItem);
20.
}
21.
};
22.
</script>
23.
</telerik:RadCodeBlock>
RadGrid
01.
<
telerik:RadGrid
AllowFilteringByColumn
=
"true"
02.
AllowSorting
=
"true"
AllowPaging
=
"true"
03.
runat
=
"server"
ID
=
"RadGrid1"
04.
PageSize
=
"10"
05.
AutoGenerateColumns
=
"false"
06.
ClientDataSourceID
=
"RadClientDataSource1"
>
07.
<
ClientSettings
>
08.
<
ClientEvents
OnRowDataBound
=
"RowDataBound"
/>
09.
</
ClientSettings
>
10.
<
MasterTableView
ClientDataKeyNames
=
"ID"
>
11.
<
Columns
>
12.
<
telerik:GridBoundColumn
13.
UniqueName
=
"ID"
14.
DataField
=
"ID"
15.
HeaderText
=
"ID"
16.
ReadOnly
=
"true"
/>
17.
<
telerik:GridTemplateColumn
UniqueName
=
"OpType"
AllowFiltering
=
"false"
HeaderText
=
"Opportunity Type"
>
18.
<
ItemTemplate
>
19.
<
telerik:RadComboBox
20.
runat
=
"server"
21.
ID
=
"cmbOpportunityType"
22.
OnClientSelectedIndexChanged
=
"OnClientItemSelected"
>
23.
</
telerik:RadComboBox
>
24.
</
ItemTemplate
>
25.
</
telerik:GridTemplateColumn
>
26.
27.
<
telerik:GridTemplateColumn
28.
UniqueName
=
"EstimatedValue"
29.
HeaderText
=
"Esitmated Value"
30.
AllowFiltering
=
"false"
>
31.
<
ItemTemplate
>
32.
<
telerik:RadNumericTextBox
33.
EnabledStyle-HorizontalAlign
=
"Right"
34.
runat
=
"server"
35.
ID
=
"tEstimateValue"
>
36.
</
telerik:RadNumericTextBox
>
37.
</
ItemTemplate
>
38.
</
telerik:GridTemplateColumn
>
39.
40.
<
telerik:GridTemplateColumn
UniqueName
=
"Name"
DataField
=
"Name"
AllowFiltering
=
"false"
>
41.
<
ItemTemplate
>
42.
<
telerik:RadTextBox
runat
=
"server"
ID
=
"tName"
></
telerik:RadTextBox
>
43.
</
ItemTemplate
>
44.
</
telerik:GridTemplateColumn
>
45.
46.
<
telerik:GridTemplateColumn
UniqueName
=
"Shipped"
DataField
=
"Shipped"
AllowFiltering
=
"false"
>
47.
<
ItemTemplate
>
48.
<
telerik:RadDatePicker
runat
=
"server"
ID
=
"tDatePicker"
></
telerik:RadDatePicker
>
49.
</
ItemTemplate
>
50.
</
telerik:GridTemplateColumn
>
51.
<
telerik:GridClientDeleteColumn
HeaderText
=
"Delete"
ButtonType
=
"ImageButton"
HeaderStyle-Width
=
"70px"
>
52.
</
telerik:GridClientDeleteColumn
>
53.
</
Columns
>
54.
</
MasterTableView
>
55.
</
telerik:RadGrid
>
56.
<
telerik:RadClientDataSource
runat
=
"server"
ID
=
"RadClientDataSource1"
>
57.
<
DataSource
>
58.
<
WebServiceDataSourceSettings
>
59.
<
Select
Url
=
"api/products"
RequestType
=
"Get"
/>
60.
</
WebServiceDataSourceSettings
>
61.
</
DataSource
>
62.
<
Schema
>
63.
<
Model
ID
=
"ID"
>
64.
<
telerik:ClientDataSourceModelField
FieldName
=
"ID"
DataType
=
"Number"
/>
65.
<
telerik:ClientDataSourceModelField
FieldName
=
"Name"
DataType
=
"String"
/>
66.
<
telerik:ClientDataSourceModelField
FieldName
=
"Shipped"
DataType
=
"Date"
/>
67.
</
Model
>
68.
</
Schema
>
69.
</
telerik:RadClientDataSource
>
Service returns 6 rows.
01.
products =
new
List<Product>(
new
Product[]
02.
{
03.
new
Product { ID = 1, Name =
"Product1"
, Category =
"Category1"
, Price = 1.05M,Shipped=DateTime.Now },
04.
new
Product { ID = 2, Name =
"Product2"
, Category =
"Category2"
, Price = 3.75M,Shipped=DateTime.Now },
05.
new
Product { ID = 3, Name =
"Product3"
, Category =
"Category2"
, Price = 2.34M,Shipped=DateTime.Now },
06.
new
Product { ID = 4, Name =
"Product4"
, Category =
"Category3"
, Price = 1.63M,Shipped=DateTime.Now },
07.
new
Product { ID = 5, Name =
"Product5"
, Category =
"Category4"
, Price = 5.62M,Shipped=DateTime.Now },
08.
new
Product { ID = 6, Name =
"Product6"
, Category =
"Category1"
, Price = 7.68M,Shipped=DateTime.Now },
09.
/*new Product { ID = 7, Name = "Product7", Category = "Category1", Price = 8.23M,Shipped=DateTime.Now },
10.
new Product { ID = 8, Name = "Product8", Category = "Category2", Price = 9.44M,Shipped=DateTime.Now },
11.
new Product { ID = 9, Name = "Product9", Category = "Category2", Price = 0.43M,Shipped=DateTime.Now },
12.
new Product { ID = 10, Name = "Product10", Category = "Category3", Price = 2.12M,Shipped=DateTime.Now },
13.
new Product { ID = 11, Name = "Product11", Category = "Category4", Price = 1.79M,Shipped=DateTime.Now },
14.
new Product { ID = 12, Name = "Product12", Category = "Category4", Price = 4.22M,Shipped=DateTime.Now } */
15.
});
** I have removed columns irrelevant to this issue.