How to get Radgrid dropdown list template column selected value in InsertCommand?
I used below, doesn't work. Also, how to make the text filter work for a dropdownlist column?
DropDownList dl;
dl = newItem[
"Language"].Controls[0] as DropDownList;
String SelectLanguageID = dl.SelectedValue;
----------------------------------------------------------------
<telerik:GridTemplateColumn HeaderText="Language" UniqueName="Language"
AutoPostBackOnFilter="true" CurrentFilterFunction="Contains"
ShowFilterIcon="false" FilterControlWidth="200px" >
<EditItemTemplate>
<asp:DropDownList ID="ddlLanguage" runat="server">
</asp:DropDownList>
</EditItemTemplate>
<FooterTemplate>
<asp:Label ID="lblLanguage" runat="server">
</asp:Label>
</FooterTemplate>
<ItemTemplate>
</ItemTemplate>
</telerik:GridTemplateColumn>
Thanks!
10 Answers, 1 is accepted

DropDownList dl;
dl = newItem[
"Language"
].Controls[0]
as
DropDownList;
String SelectLanguageID = dl.SelectedValue;
<
telerik:GridTemplateColumn
HeaderText
=
"Language"
UniqueName
=
"Language"
AutoPostBackOnFilter
=
"true"
CurrentFilterFunction
=
"Contains"
ShowFilterIcon
=
"false"
FilterControlWidth
=
"200px"
>
<
EditItemTemplate
>
<
asp:DropDownList
ID
=
"ddlLanguage"
runat
=
"server"
>
</
asp:DropDownList
>
</
EditItemTemplate
>
<
FooterTemplate
>
<
asp:Label
ID
=
"lblLanguage"
runat
=
"server"
>
</
asp:Label
>
</
FooterTemplate
>
<
ItemTemplate
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
I know how to do it in code behind - I do all my IO in code - but that isn't what the poster is asking
anyway - to do it in code behind
on an ItemCommand event
if e.CommandName is "PerformInsert"
cast e.Item as GridDataItem
cast e.item("unique name").Controls(0) as RadComboBox (I used a Rad Combo Box, not a drop down list)
the rad combo box selected value I passed into the insert method
hope that helps

It won't recognize the item in e.item["unique name"].Controls(0) as DropDownList
But I tried below, it works.
GridEditableItem editedItem = (GridEditableItem)e.Item;
DropDownList dl;
dl = (
DropDownList)editedItem.FindControl("ddlLanguage");
The filter for the dropdown column still doesn't work for me.
Try setting the DataField property of the column. You can refer to the below article for more information:
http://www.telerik.com/help/aspnet-ajax/grdimplementingfilteringfortemplatecolumns.html
Regards,
Iana
the Telerik team


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DropDownDemo.aspx.cs" Inherits="TelerikTest.Web.DropDownDemo" %>
<!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"
>
<
div
>
<
telerik:RadScriptManager
runat
=
"server"
ID
=
"RadScriptManager1"
>
</
telerik:RadScriptManager
>
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
AutoGenerateColumns
=
"false"
OnNeedDataSource
=
"RadGrid1_NeedDataSource"
OnItemDataBound
=
"RadGrid1_ItemDataBound"
OnInsertCommand
=
"RadGrid1_InsertCommand"
OnUpdateCommand
=
"RadGrid1_UpdateCommand"
AllowFilteringByColumn
=
"true"
>
<
MasterTableView
CommandItemDisplay
=
"Top"
>
<
Columns
>
<
telerik:GridEditCommandColumn
UniqueName
=
"gecc"
>
</
telerik:GridEditCommandColumn
>
<
telerik:GridBoundColumn
DataField
=
"ID"
HeaderText
=
"ID"
UniqueName
=
"ID"
>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
DataField
=
"Name"
HeaderText
=
"Name"
UniqueName
=
"Name"
>
<
ItemTemplate
>
<%# Eval("Name") %>
</
ItemTemplate
>
<
EditItemTemplate
>
<
asp:Label
ID
=
"lblName"
runat
=
"server"
Text='<%# Eval("Name") %>' Visible="false"></
asp:Label
>
<
asp:DropDownList
ID
=
"DropDownList1"
runat
=
"server"
>
</
asp:DropDownList
>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
div
>
</
form
>
</
body
>
</
html
>
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
Telerik.Web.UI;
namespace
TelerikTest.Web
{
public
partial
class
DropDownDemo : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
}
protected
void
RadGrid1_NeedDataSource(
object
sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
dynamic data =
new
[] {
new
{ ID = 1, Name =
"Name1"
},
new
{ ID = 2, Name =
"Name2"
},
new
{ ID = 3, Name =
"Name3"
},
new
{ ID = 4, Name =
"Name4"
},
new
{ ID = 5, Name =
"Name5"
},
new
{ ID = 6, Name =
"Name6"
},
new
{ ID = 7, Name =
"Name7"
},
new
{ ID = 8, Name =
"Name8"
},
new
{ ID = 9, Name =
"Name9"
},
new
{ ID = 10, Name =
"Name10"
},
new
{ ID = 11, Name =
"Name11"
},
new
{ ID = 12, Name =
"Name12"
},
new
{ ID = 13, Name =
"Name13"
},
new
{ ID = 14, Name =
"Name14"
},
new
{ ID = 15, Name =
"Name15"
}
};
RadGrid1.DataSource = data;
}
protected
void
RadGrid1_ItemDataBound(
object
sender, Telerik.Web.UI.GridItemEventArgs e)
{
if
(e.Item
is
GridEditableItem && e.Item.IsInEditMode)
{
GridEditableItem edititem = (GridEditableItem)e.Item;
DropDownList DropDownList1 = (DropDownList)edititem.FindControl(
"DropDownList1"
);
dynamic data =
new
[] {
new
{ ID = 1, Name =
"Name1"
},
new
{ ID = 2, Name =
"Name2"
},
new
{ ID = 3, Name =
"Name3"
},
new
{ ID = 4, Name =
"Name4"
},
new
{ ID = 5, Name =
"Name5"
},
new
{ ID = 6, Name =
"Name6"
},
new
{ ID = 7, Name =
"Name7"
},
new
{ ID = 8, Name =
"Name8"
},
new
{ ID = 9, Name =
"Name9"
},
new
{ ID = 10, Name =
"Name10"
},
new
{ ID = 11, Name =
"Name11"
},
new
{ ID = 12, Name =
"Name12"
},
new
{ ID = 13, Name =
"Name13"
},
new
{ ID = 14, Name =
"Name14"
},
new
{ ID = 15, Name =
"Name15"
}
};
DropDownList1.DataSource = data;
DropDownList1.DataTextField =
"Name"
;
DropDownList1.DataValueField =
"ID"
;
DropDownList1.DataBind();
Label lblName = edititem.FindControl(
"lblName"
)
as
Label;
if
(!
string
.IsNullOrEmpty(lblName.Text))
{
DropDownList1.SelectedValue = lblName.Text;
}
}
}
protected
void
RadGrid1_InsertCommand(
object
sender, GridCommandEventArgs e)
{
GridEditableItem gridEditFormItem = (GridEditableItem)e.Item;
DropDownList DropDownList1 = gridEditFormItem.FindControl(
"DropDownList1"
)
as
DropDownList;
string
strTemp = DropDownList1.SelectedItem.Text;
}
protected
void
RadGrid1_UpdateCommand(
object
sender, GridCommandEventArgs e)
{
GridEditableItem gridEditFormItem = (GridEditableItem)e.Item;
DropDownList DropDownList1 = gridEditFormItem.FindControl(
"DropDownList1"
)
as
DropDownList;
string
strTemp = DropDownList1.SelectedItem.Text;
}
}
}
Let me know if any concern.
Thanks,
Jayesh Goyani
And here is the updated url to the help topic my colleague Iana pointed in her post:
http://www.telerik.com/help/aspnet-ajax/grid-implementing-filtering-for-gridtemplatecolumns.html
Greetings,
Sebastian
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.

i would like to say thanks alot to you,your example is exellent ,the difficult thing was to find the proper DropDownlist controls for insert and update,And your code is perfect,I have successfully completed my Insert and update operation by the help of your code.
Regards
Saqib


I converted the code to VB but it doesn´t work, can you tell me why?
In New (), it tells me "Type Expected"!
Dim data As dynamic = New () {
New With { Key .ID = 1, Key .Name = "Name1" },
New With { Key .ID = 2, Key .Name = "Name2" },
New With { Key .ID = 3, Key .Name = "Name3" },
New With { Key .ID = 4, Key .Name = "Name4" },
New With { Key .ID = 5, Key .Name = "Name5" }}
DropDownList1.DataSource = data
Thank you,
João
You can use the following approach to create a dummy source:
DropDownList1.DataSource = Enumerable.Range(0, 5).[
Select
](
Function
(x)
New
With
{.ID = x, .Name =
"Name "
& x})
DropDownList1.DataTextField =
"Name"
DropDownList1.DataValueField =
"ID"
DropDownList1.DataBind()
Hope this helps.
Regards,
Eyup
Telerik
Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.