Scenario:
Grid with a GridDropDown column. The source for the drop down is a simple table of name/id pairs. If doing an update in batch mode, and the drop down's ListTextField has trailing spaces, the ListValueField won't be passed back during an update.
See sample below. At line 20 is the code to create the sample SQL data.
When running this sample, if you attempt to update a row and use any of the drop downs that end in spaces, the update will not assign the correct id value. If you change the edit mode from batch to popup, it will work fine. If you change line 42 to read:
ListTextField="name_trimmed" or ListTextField="name_appended"
both of which change the field to NOT end in trailing spaces, it will work as well.
I was able to work around this, but it's definitely a bug in the control. Trailing spaces should not throw of the ListValueField. I'm currently using version 2016.2.607.45
01.
<%@ Page Language="C#" %>
02.
03.
<!DOCTYPE html>
04.
05.
<
script
runat
=
"server"
>
06.
07.
</
script
>
08.
09.
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
10.
<
head
runat
=
"server"
>
11.
<
title
></
title
>
12.
</
head
>
13.
<
body
>
14.
<
form
id
=
"form1"
runat
=
"server"
>
15.
<
div
>
16.
17.
<
asp:ScriptManager
runat
=
"server"
ID
=
"scriptmgr"
/>
18.
19.
<%--
20.
/* SQL code to create tables and test data */
21.
create table dropdownvalues (id int identity(1,1), name varchar(200))
22.
create table datalist (id int identity(1,1), dropdown_id int)
23.
insert into dropdownvalues (name) values('no spaces'), ('spaces ')
24.
25.
insert into datalist(dropdown_id)
26.
select top 2 id from dropdownvalues
27.
28.
insert into dropdownvalues (name) values('three spaces ')
29.
insert into dropdownvalues (name) values('forty spaces ')
30.
insert into dropdownvalues (name) values('zero spaces')
31.
--%>
32.
33.
<
telerik:GridDropDownListColumnEditor
runat
=
"server"
ID
=
"ddeditor"
DropDownStyle-Width
=
"200"
/>
34.
35.
<
telerik:RadGrid
runat
=
"server"
DataSourceID
=
"sql_source"
AllowAutomaticUpdates
=
"true"
AutoGenerateColumns
=
"false"
>
36.
<%--Works fine in PopUp edit mode--%>
37.
<
MasterTableView
EditMode
=
"Batch"
CommandItemDisplay
=
"Top"
DataKeyNames
=
"id"
>
38.
<
Columns
>
39.
<
telerik:GridEditCommandColumn
/>
40.
<
telerik:GridBoundColumn
DataField
=
"id"
HeaderText
=
"id"
ReadOnly
=
"true"
/>
41.
<
telerik:GridDropDownColumn
DataField
=
"dropdown_id"
HeaderText
=
"dropdown_id"
DataSourceID
=
"sql_dropdown"
42.
ListValueField
=
"id"
ListTextField
=
"name"
HeaderStyle-Width
=
"400"
ColumnEditorID
=
"ddeditor"
/>
43.
<
telerik:GridBoundColumn
DataField
=
"saved_dropdown_id"
HeaderText
=
"saved_dropdown_id"
ReadOnly
=
"true"
/>
44.
</
Columns
>
45.
</
MasterTableView
>
46.
</
telerik:RadGrid
>
47.
48.
<
asp:SqlDataSource
ConnectionString="<%$ ConnectionStrings:MyDB%>" ID="sql_source" runat="server"
49.
SelectCommand="select *, dropdown_id as saved_dropdown_id from datalist"
50.
UpdateCommand="update datalist set dropdown_id=@dropdown_id where id=@id"
51.
/>
52.
53.
<
asp:SqlDataSource
ConnectionString="<%$ ConnectionStrings:MyDB%>" ID="sql_dropdown" runat="server"
54.
SelectCommand="select id,name, rtrim(name) name_trimmed, name + '-' name_appended from dropdownvalues order by name" />
55.
</
div
>
56.
</
form
>
57.
</
body
>
58.
</
html
>